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