diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..6a47d46b
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/../../../../../../:\Lesson\Java\JavaMentor\JM_PP_1\.idea/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 00000000..24736517
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+TaskJDBC
\ No newline at end of file
diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml
new file mode 100644
index 00000000..658f1529
--- /dev/null
+++ b/.idea/checkstyle-idea.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000..7d7e59f1
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 00000000..614c25b6
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306/db_user?autoReconnect=true&useSSL=false
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba.xml b/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba.xml
new file mode 100644
index 00000000..150ce42e
--- /dev/null
+++ b/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba.xml
@@ -0,0 +1,915 @@
+
+
+
+
+ 8.0.23
+ InnoDB
+ InnoDB
+ lower/lower
+
+
+ 1
+ utf8_general_ci
+
+
+ utf8_general_ci
+
+
+ utf8mb4_0900_ai_ci
+
+
+ utf8mb4_0900_ai_ci
+
+
+ utf8mb4_0900_ai_ci
+
+
+ armscii8
+
+
+ armscii8
+ 1
+
+
+ ascii
+
+
+ ascii
+ 1
+
+
+ big5
+
+
+ big5
+ 1
+
+
+ binary
+ 1
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+
+
+ cp1250
+ 1
+
+
+ cp1250
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1251
+ 1
+
+
+ cp1251
+
+
+ cp1251
+
+
+ cp1256
+
+
+ cp1256
+ 1
+
+
+ cp1257
+
+
+ cp1257
+ 1
+
+
+ cp1257
+
+
+ cp850
+
+
+ cp850
+ 1
+
+
+ cp852
+
+
+ cp852
+ 1
+
+
+ cp866
+
+
+ cp866
+ 1
+
+
+ cp932
+
+
+ cp932
+ 1
+
+
+ dec8
+
+
+ dec8
+ 1
+
+
+ eucjpms
+
+
+ eucjpms
+ 1
+
+
+ euckr
+
+
+ euckr
+ 1
+
+
+ gb18030
+
+
+ gb18030
+ 1
+
+
+ gb18030
+
+
+ gb2312
+
+
+ gb2312
+ 1
+
+
+ gbk
+
+
+ gbk
+ 1
+
+
+ geostd8
+
+
+ geostd8
+ 1
+
+
+ greek
+
+
+ greek
+ 1
+
+
+ hebrew
+
+
+ hebrew
+ 1
+
+
+ hp8
+
+
+ hp8
+ 1
+
+
+ keybcs2
+
+
+ keybcs2
+ 1
+
+
+ koi8r
+
+
+ koi8r
+ 1
+
+
+ koi8u
+
+
+ koi8u
+ 1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+
+
+ latin1
+ 1
+
+
+ latin2
+
+
+ latin2
+
+
+ latin2
+
+
+ latin2
+ 1
+
+
+ latin2
+
+
+ latin5
+
+
+ latin5
+ 1
+
+
+ latin7
+
+
+ latin7
+
+
+ latin7
+ 1
+
+
+ latin7
+
+
+ macce
+
+
+ macce
+ 1
+
+
+ macroman
+
+
+ macroman
+ 1
+
+
+ sjis
+
+
+ sjis
+ 1
+
+
+ swe7
+
+
+ swe7
+ 1
+
+
+ tis620
+
+
+ tis620
+ 1
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+ 1
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ucs2
+
+
+ ujis
+
+
+ ujis
+ 1
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+ 1
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16
+
+
+ utf16le
+
+
+ utf16le
+ 1
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+ 1
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf32
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+ 1
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8
+
+
+ utf8mb4
+ 1
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ utf8mb4
+
+
+ localhost
+ SELECT
+SYSTEM_USER
+
+
+
+ localhost
+ SHUTDOWN,SUPER
+BACKUP_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,PERSIST_RO_VARIABLES_ADMIN,SESSION_VARIABLES_ADMIN,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN
+SELECT|performance_schema
+SELECT|mysql.user
+
+
+
+ localhost
+ SYSTEM_USER
+TRIGGER|sys
+SELECT|sys.sys_config
+
+
+
+ %
+ SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,FILE,REFERENCES,INDEX,ALTER,SHOW DATABASES,SUPER,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER,CREATE TABLESPACE!
+
+
+
+ localhost
+ SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,FILE,REFERENCES,INDEX,ALTER,SHOW DATABASES,SUPER,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER,CREATE TABLESPACE,CREATE ROLE,DROP ROLE!
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
new file mode 100644
index 00000000..1ff3db2e
--- /dev/null
+++ b/.idea/dataSources/0130477f-cf98-4785-bfb1-dc2f7b4d16ba/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
@@ -0,0 +1,2 @@
+#n:information_schema
+! [null, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 00000000..69f30c92
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 00000000..712ab9d9
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__antlr_antlr_2_7_7.xml b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml
new file mode 100644
index 00000000..b8d93d8e
--- /dev/null
+++ b/.idea/libraries/Maven__antlr_antlr_2_7_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml
new file mode 100644
index 00000000..14681ee8
--- /dev/null
+++ b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_13_1.xml b/.idea/libraries/Maven__junit_junit_4_13_1.xml
new file mode 100644
index 00000000..9fa24fcb
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_13_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml
new file mode 100644
index 00000000..c6485891
--- /dev/null
+++ b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 00000000..f58bbc11
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml
new file mode 100644
index 00000000..9ed6d297
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_common_hibernate_commons_annotations_4_0_5_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml b/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml
new file mode 100644
index 00000000..0f9bf7c2
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_hibernate_core_4_3_10_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml
new file mode 100644
index 00000000..1d8ce405
--- /dev/null
+++ b/.idea/libraries/Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml
new file mode 100644
index 00000000..1f907308
--- /dev/null
+++ b/.idea/libraries/Maven__org_javassist_javassist_3_18_1_GA.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml b/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml
new file mode 100644
index 00000000..d3cd0897
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_jandex_1_1_0_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml
new file mode 100644
index 00000000..815ab4d8
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_1_3_GA.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml
new file mode 100644
index 00000000..715be298
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_logging_jboss_logging_annotations_1_2_0_Beta1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml b/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml
new file mode 100644
index 00000000..2ab91298
--- /dev/null
+++ b/.idea/libraries/Maven__org_jboss_spec_javax_transaction_jboss_transaction_api_1_2_spec_1_0_0_Final.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml
new file mode 100644
index 00000000..c36e7171
--- /dev/null
+++ b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..d09c9eb4
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..882550cd
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 00000000..f4da3ce7
--- /dev/null
+++ b/.idea/sqldialects.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TaskJDBC.iml b/TaskJDBC.iml
new file mode 100644
index 00000000..110593d6
--- /dev/null
+++ b/TaskJDBC.iml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0605a4c0..c1263224 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,14 +26,14 @@
junit
junit
- 4.12
+ 4.13.1
test
- mysql
- mysql-connector-java
- 5.1.38
+ mysql
+ mysql-connector-java
+ 8.0.23
@@ -47,6 +47,16 @@
hibernate-core
4.3.10.Final
-
+
+ mysql
+ mysql-connector-java
+ 5.1.38
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java
index f6e43b0f..9030f9d8 100644
--- a/src/main/java/jm/task/core/jdbc/Main.java
+++ b/src/main/java/jm/task/core/jdbc/Main.java
@@ -1,7 +1,28 @@
package jm.task.core.jdbc;
+import jm.task.core.jdbc.model.User;
+import jm.task.core.jdbc.service.UserService;
+import jm.task.core.jdbc.service.UserServiceImpl;
+import jm.task.core.jdbc.util.Util;
+import org.hibernate.SessionFactory;
+
public class Main {
+
public static void main(String[] args) {
- // реализуйте алгоритм здесь
- }
+ UserService us = new UserServiceImpl();
+
+ us.createUsersTable();
+ us.saveUser("Ivan","Ivanov",(byte)37);
+ us.saveUser("Petr","Petrov",(byte)14);
+ us.saveUser("Gleb","Zemnuhov",(byte)17);
+ us.saveUser("Ivan","Petrov",(byte)34);
+ us.removeUserById(3L);
+//
+ for (User u: us.getAllUsers()){
+ System.out.println(u);
+ }
+ us.cleanUsersTable();
+ us.dropUsersTable();
+
+ }
}
diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
index dc2d0636..e7a1e240 100644
--- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
+++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
@@ -3,8 +3,13 @@
import jm.task.core.jdbc.model.User;
import java.util.List;
+import jm.task.core.jdbc.util.Util;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
-public class UserDaoHibernateImpl implements UserDao {
+public class UserDaoHibernateImpl extends UserDaoJDBCImpl implements UserDao {
+ private SessionFactory sessionFactory = null;
+ private Session session = null;
public UserDaoHibernateImpl() {
}
@@ -12,31 +17,130 @@ public UserDaoHibernateImpl() {
@Override
public void createUsersTable() {
+ try {
+ String creatTable = "CREATE TABLE IF NOT EXISTS user_table"
+ + "(id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY ,"
+ + "name VARCHAR(50),"
+ + "lastName VARCHAR(50),"
+ + "age INT(3))";
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.openSession();
+// session.beginTransaction();
+ session.createSQLQuery(creatTable)
+ .executeUpdate();
+ }catch (Exception e){
+ System.out.println("Ошибка creatTable: " + e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
}
@Override
public void dropUsersTable() {
-
+ try {
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.openSession();
+ session.beginTransaction();
+ session.createSQLQuery("drop table user_table")
+ .executeUpdate();
+ }catch (Exception e){
+ System.out.println("Ошибка dropTable: " + e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
}
@Override
public void saveUser(String name, String lastName, byte age) {
+ try{
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.openSession();
+ session.beginTransaction();
+ session.save(new User(name,lastName,age));
+ session.getTransaction().commit();
+ String addUser = new String("User с именем – " + name +" добавлен в базу данных");
+ System.out.println(addUser);
+ }catch (Exception e){
+ System.out.println("Ошибка saveUser: " + e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
}
@Override
public void removeUserById(long id) {
-
+ try {
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.openSession();
+ session.beginTransaction();
+ User user = (User) session.load(User.class, id);
+ session.delete(user);
+ session.getTransaction().commit();
+
+ }catch (Exception e){
+ System.out.println("Ошибка в removeUserById: "+e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
}
@Override
public List getAllUsers() {
- return null;
+ List list = null;
+ try {
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.openSession();
+ session.beginTransaction();
+ list = session.createQuery("from User").list();
+ session.getTransaction().commit();
+
+ }catch (Exception e){
+ System.out.println("Ошибка в getAllUsers: "+e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
+ return list;
}
@Override
public void cleanUsersTable() {
-
+ try {
+ sessionFactory = Util.getSessionFactory();
+ session = sessionFactory.getCurrentSession();
+ session.beginTransaction();
+ session.createQuery("delete from User").executeUpdate();
+ session.getTransaction().commit();
+
+ }catch (Exception e){
+ System.out.println("Ошибка в cleanUsersTable: "+e);
+ session.getTransaction().rollback();
+ }finally {
+ try{session.close();
+ sessionFactory.getCurrentSession().close();
+ }catch (Exception ignored){
+ };
+ }
}
}
diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java
index a6c6c359..45794de6 100644
--- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java
+++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java
@@ -1,35 +1,101 @@
package jm.task.core.jdbc.dao;
-import jm.task.core.jdbc.model.User;
-
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
import java.util.List;
+import jm.task.core.jdbc.model.User;
+import jm.task.core.jdbc.util.Util;
public class UserDaoJDBCImpl implements UserDao {
public UserDaoJDBCImpl() {
}
-
public void createUsersTable() {
+ try(Connection connection = Util.getDBConnection()) {
+ Statement stmt = connection.createStatement();
+
+ String creatTable = "CREATE TABLE IF NOT EXISTS user_table"
+ + "(id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY ,"
+ + "name VARCHAR(50),"
+ + "lastName VARCHAR(50),"
+ + "age INT(3))";
+ stmt.executeUpdate(creatTable);
+ stmt.close();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
}
public void dropUsersTable() {
+ try(Connection connection = Util.getDBConnection()) {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("DROP TABLE IF EXISTS user_table");
+ stmt.close();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
}
public void saveUser(String name, String lastName, byte age) {
+ try(Connection connection = Util.getDBConnection()) {
+
+ String data = "INSERT INTO user_table(name,lastName,age) VALUES (?,?,?)";
+ PreparedStatement stmt = connection.prepareStatement(data);
+ stmt.setString(1,name);
+ stmt.setString(2,lastName);
+ stmt.setInt(3,age);
+ stmt.executeUpdate();
+ stmt.close();
+ System.out.println("User с именем – " + name +" добавлен в базу данных");
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
}
public void removeUserById(long id) {
+ try(Connection connection = Util.getDBConnection()) {
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("DELETE FROM user_table WHERE ID = "+ id);
+ stmt.close();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
}
public List getAllUsers() {
- return null;
+ List list = new ArrayList<>();
+ try(Connection connection = Util.getDBConnection()) {
+
+ Statement stmt = connection.createStatement();
+ ResultSet resultSet = stmt.executeQuery("SELECT * FROM user_table");
+ while (resultSet.next()){
+ list.add( new User(resultSet.getLong(1),resultSet.getString(2)
+ ,resultSet.getString(3)
+ ,(byte)resultSet.getInt(4)));
+ }
+ stmt.close();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ return list;
}
public void cleanUsersTable() {
+ try(Connection connection = Util.getDBConnection()) {
+
+ Statement stmt = connection.createStatement();
+ stmt.executeUpdate("DELETE FROM user_table");
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
}
}
diff --git a/src/main/java/jm/task/core/jdbc/model/User.java b/src/main/java/jm/task/core/jdbc/model/User.java
index 21b054f6..75605aaa 100644
--- a/src/main/java/jm/task/core/jdbc/model/User.java
+++ b/src/main/java/jm/task/core/jdbc/model/User.java
@@ -1,21 +1,27 @@
package jm.task.core.jdbc.model;
import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
-@Table
+@Entity
+@Table(name = "user_table")
public class User {
@Id
+ @Column(name = "id")
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
- @Column
+ @Column(name = "name")
private String name;
- @Column
+ @Column(name = "lastName")
private String lastName;
- @Column
+ @Column(name = "age")
private Byte age;
public User() {
@@ -32,10 +38,15 @@ public Long getId() {
return id;
}
- public void setId(Long id) {
+ public User(Long id, String name, String lastName, Byte age) {
this.id = id;
+ this.name = name;
+ this.lastName = lastName;
+ this.age = age;
}
+ public void setId(Long id) {this.id = id; }
+
public String getName() {
return name;
}
@@ -59,4 +70,9 @@ public Byte getAge() {
public void setAge(Byte age) {
this.age = age;
}
+
+ public String toString(){
+
+ return this.getId() +" "+ this.getName() +" "+ this.getLastName() +" "+ this.getAge();
+ }
}
diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java
index b05bd191..12caaccb 100644
--- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java
+++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java
@@ -1,31 +1,35 @@
package jm.task.core.jdbc.service;
+import jm.task.core.jdbc.dao.UserDao;
+import jm.task.core.jdbc.dao.UserDaoHibernateImpl;
+import jm.task.core.jdbc.dao.UserDaoJDBCImpl;
import jm.task.core.jdbc.model.User;
import java.util.List;
public class UserServiceImpl implements UserService {
- public void createUsersTable() {
-
- }
-
- public void dropUsersTable() {
-
- }
-
- public void saveUser(String name, String lastName, byte age) {
-
- }
-
- public void removeUserById(long id) {
-
- }
-
- public List getAllUsers() {
- return null;
- }
-
- public void cleanUsersTable() {
-
- }
+ UserDao ud = new UserDaoHibernateImpl();
+ public void createUsersTable() {
+ ud.createUsersTable();
+ }
+
+ public void dropUsersTable() {
+ ud.dropUsersTable();
+ }
+
+ public void saveUser(String name, String lastName, byte age) {
+ ud.saveUser(name,lastName,age);
+ }
+
+ public void removeUserById(long id) {
+ ud.removeUserById(id);
+ }
+
+ public List getAllUsers() {
+ return ud.getAllUsers();
+ }
+
+ public void cleanUsersTable() {
+ ud.cleanUsersTable();
+ }
}
diff --git a/src/main/java/jm/task/core/jdbc/util/Util.java b/src/main/java/jm/task/core/jdbc/util/Util.java
index 59e462ba..4e1619ed 100644
--- a/src/main/java/jm/task/core/jdbc/util/Util.java
+++ b/src/main/java/jm/task/core/jdbc/util/Util.java
@@ -1,5 +1,81 @@
package jm.task.core.jdbc.util;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Properties;
+import jm.task.core.jdbc.model.User;
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.service.ServiceRegistry;
public class Util {
// реализуйте настройку соеденения с БД
+ private static Connection connection = null;
+ private static final String URL = "jdbc:mysql://localhost:3306/db_user?autoReconnect=true&useSSL=false";
+ private static final String USERNAME = "newroot";
+ private static final String PASSWORD = "root";
+ private Util(){
+
+ }
+
+ public static Connection getDBConnection(){
+ try {
+ if(connection == null || connection.isClosed()){
+ connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
+ }
+ } catch (SQLException throwables) {
+ System.out.println("Ошибка подключения: " + throwables);
+ }
+ return connection;
+ }
+
+ // +++++++++++++++++++++++++++++++++++++++ Hibernate connection ++++++++++++++++++++++++++++++++++//
+
+ private static SessionFactory sessionFactory;
+ public static SessionFactory getSessionFactory() {
+ if (sessionFactory == null ) {
+ try {
+ Configuration configuration = new Configuration();
+
+ // Hibernate settings equivalent to hibernate.cfg.xml's properties
+ Properties settings = new Properties();
+ settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
+ settings.put(Environment.URL, "jdbc:mysql://localhost:3306/db_user?autoReconnect=true&useSSL=false");
+ settings.put(Environment.USER, "newroot");
+ settings.put(Environment.PASS, "root");
+ settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
+
+ settings.put(Environment.SHOW_SQL, "true");
+
+ settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
+
+ settings.put(Environment.HBM2DDL_AUTO, "create"); // create-drop
+
+ configuration.setProperties(settings);
+
+ configuration.addAnnotatedClass(User.class);
+
+ ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
+ .applySettings(configuration.getProperties()).build();
+
+ sessionFactory = configuration.buildSessionFactory(serviceRegistry);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return sessionFactory;
+ }
+
+// public static void setSessionFactory(){
+// assert sessionFactory != null;
+// sessionFactory = Util.SessionFactory();
+// }
+
+ public static void closeSF(){
+ assert sessionFactory != null;
+ sessionFactory.close();
+ }
+
}
diff --git a/target/classes/jm/task/core/jdbc/Main.class b/target/classes/jm/task/core/jdbc/Main.class
new file mode 100644
index 00000000..e16e55d9
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/Main.class differ
diff --git a/target/classes/jm/task/core/jdbc/dao/UserDao.class b/target/classes/jm/task/core/jdbc/dao/UserDao.class
new file mode 100644
index 00000000..437ac31e
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDao.class differ
diff --git a/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class b/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class
new file mode 100644
index 00000000..da597803
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDaoHibernateImpl.class differ
diff --git a/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class b/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class
new file mode 100644
index 00000000..edfdc830
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/dao/UserDaoJDBCImpl.class differ
diff --git a/target/classes/jm/task/core/jdbc/model/User.class b/target/classes/jm/task/core/jdbc/model/User.class
new file mode 100644
index 00000000..f8bb8174
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/model/User.class differ
diff --git a/target/classes/jm/task/core/jdbc/service/UserService.class b/target/classes/jm/task/core/jdbc/service/UserService.class
new file mode 100644
index 00000000..e1f43236
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/service/UserService.class differ
diff --git a/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class b/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class
new file mode 100644
index 00000000..bedfb6bd
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/service/UserServiceImpl.class differ
diff --git a/target/classes/jm/task/core/jdbc/util/Util.class b/target/classes/jm/task/core/jdbc/util/Util.class
new file mode 100644
index 00000000..4b83081d
Binary files /dev/null and b/target/classes/jm/task/core/jdbc/util/Util.class differ
diff --git a/target/test-classes/UserServiceTest.class b/target/test-classes/UserServiceTest.class
new file mode 100644
index 00000000..3e86d3f4
Binary files /dev/null and b/target/test-classes/UserServiceTest.class differ