From 7b502613066a5cea4743689ac2893a859f46832d Mon Sep 17 00:00:00 2001 From: vik Date: Fri, 26 Nov 2021 21:16:06 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/jarRepositories.xml | 20 ++++++ src/main/java/jm/task/core/jdbc/Main.java | 28 +++++++- .../task/core/jdbc/dao/UserDaoJDBCImpl.java | 70 ++++++++++++++++--- .../java/jm/task/core/jdbc/model/User.java | 6 ++ .../core/jdbc/service/UserServiceImpl.java | 14 ++-- .../java/jm/task/core/jdbc/util/Util.java | 16 +++++ 6 files changed, 139 insertions(+), 15 deletions(-) create mode 100644 .idea/jarRepositories.xml 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/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index f6e43b0f..d35af7c6 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,7 +1,33 @@ package jm.task.core.jdbc; +import jm.task.core.jdbc.model.User; +import jm.task.core.jdbc.service.UserServiceImpl; + +import java.util.ArrayList; public class Main { public static void main(String[] args) { - // реализуйте алгоритм здесь + User user1 = new User("a", "aa", (byte) 20); + User user2 = new User("b", "bb", (byte) 21); + User user3 = new User("c", "cc", (byte) 22); + User user4 = new User("d", "dd", (byte) 23); + + + UserServiceImpl userService = new UserServiceImpl(); + userService.createUsersTable(); + userService.saveUser(user1.getName(), user1.getLastName(), user1.getAge()); + userService.saveUser(user2.getName(), user2.getLastName(), user2.getAge()); + userService.saveUser(user3.getName(), user3.getLastName(), user3.getAge()); + userService.saveUser(user4.getName(), user4.getLastName(), user4.getAge()); + ArrayList a = (ArrayList) userService.getAllUsers(); + for (User b : a) { + System.out.print(b.toString()); + } + userService.removeUserById(2); + userService.cleanUsersTable(); + userService.dropUsersTable(); + + + + } } 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..c13d9504 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,89 @@ package jm.task.core.jdbc.dao; import jm.task.core.jdbc.model.User; +import jm.task.core.jdbc.util.Util; +import java.sql.*; +import java.util.ArrayList; import java.util.List; public class UserDaoJDBCImpl implements UserDao { public UserDaoJDBCImpl() { - } + Connection conn = Util.getConnection(); public void createUsersTable() { - + try (Statement statement = conn.createStatement()) { + statement.executeUpdate("CREATE TABLE users.users" + + "(id int not null auto_increment," + + "name VARCHAR(50), " + + "lastname VARCHAR(50), " + + "age INT, " + + "PRIMARY KEY (id))"); + System.out.println("Таблица создана"); + } catch (SQLException e) { + e.printStackTrace(); + } } public void dropUsersTable() { - - } + try (Statement statement = conn.createStatement()) { + statement.executeUpdate("DROP TABLE users.users"); + System.out.println("Таблица удалена"); + } catch (SQLException e) { + e.printStackTrace(); + } + } public void saveUser(String name, String lastName, byte age) { - + String prepaStatment = "insert into users.users (name, lastname, age) values(?, ?, ?)"; + try (PreparedStatement prepareStatement = conn.prepareStatement(prepaStatment)) { + prepareStatement.setString(1, name); + prepareStatement.setString(2, lastName); + prepareStatement.setInt(3, age); + prepareStatement.executeUpdate(); + System.out.printf("Пользователь-%s, добавлен!%n", name); + } catch (SQLException e) { + e.printStackTrace(); + } } public void removeUserById(long id) { - + String del = String.format("DELETE FROM users.users where id = %d", id); + try (Statement statement = conn.createStatement()) { + statement.executeUpdate(del); + System.out.println("Пользователь удалён!"); + } catch (SQLException e) { + e.printStackTrace(); + } } public List getAllUsers() { - return null; + List alluser = new ArrayList<>(); + try (Statement statement = conn.createStatement()) { + ResultSet resultSet = statement.executeQuery("SELECT id, name, lastName, age from users.users"); + while (resultSet.next()) { + User user = new User(); + user.setId(resultSet.getLong("id")); + user.setName(resultSet.getString("name")); + user.setLastName(resultSet.getString("lastName")); + user.setAge(resultSet.getByte("age")); + alluser.add(user); + } + System.out.println("Пользователи получены"); + } catch (SQLException e) { + e.printStackTrace(); + } + return alluser; } public void cleanUsersTable() { - + String del = "DELETE FROM users.users"; + try (Statement statement = conn.createStatement()) { + statement.executeUpdate(del); + System.out.println("Все пользователи удалены"); + } catch (SQLException e) { + e.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..75e947fd 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -22,6 +22,11 @@ public User() { } + @Override + public String toString() { + return String.format("имя-%s, фамилия-%s, возраст-%d%n", name, lastName, age); + } + public User(String name, String lastName, Byte age) { this.name = name; this.lastName = lastName; @@ -59,4 +64,5 @@ public Byte getAge() { public void setAge(Byte age) { this.age = age; } + } 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..ab659c47 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,33 @@ package jm.task.core.jdbc.service; +import jm.task.core.jdbc.dao.UserDaoJDBCImpl; import jm.task.core.jdbc.model.User; import java.util.List; public class UserServiceImpl implements UserService { + UserDaoJDBCImpl userDaoJDBC = new UserDaoJDBCImpl(); public void createUsersTable() { - + userDaoJDBC.createUsersTable(); } public void dropUsersTable() { - + userDaoJDBC.dropUsersTable(); } public void saveUser(String name, String lastName, byte age) { - + userDaoJDBC.saveUser(name, lastName, age); } public void removeUserById(long id) { - + userDaoJDBC.removeUserById(id); } public List getAllUsers() { - return null; + return userDaoJDBC.getAllUsers(); } public void cleanUsersTable() { - + userDaoJDBC.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..5e197354 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,21 @@ package jm.task.core.jdbc.util; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; public class Util { + private final static String url = "jdbc:mysql://localhost:3306?esuSSL=false"; + private final static String us = "root"; + private final static String pass = "12345"; + + public static Connection getConnection() { + Connection connection = null; + try { + connection = DriverManager.getConnection(url, us, pass); + } catch (SQLException e) { + e.printStackTrace(); + } + return connection; + } // реализуйте настройку соеденения с БД } From c8c3e38ac84db12250f5b86f93de8938c73d808f Mon Sep 17 00:00:00 2001 From: vik Date: Tue, 30 Nov 2021 07:19:09 +0300 Subject: [PATCH 2/6] PreparedStatment --- .../jm/task/core/jdbc/dao/UserDaoJDBCImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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 c13d9504..252f01c2 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java @@ -36,8 +36,8 @@ public void dropUsersTable() { } public void saveUser(String name, String lastName, byte age) { - String prepaStatment = "insert into users.users (name, lastname, age) values(?, ?, ?)"; - try (PreparedStatement prepareStatement = conn.prepareStatement(prepaStatment)) { + try (PreparedStatement prepareStatement = conn.prepareStatement("insert into users.users " + + "(name, lastname, age) values(?, ?, ?)")) { prepareStatement.setString(1, name); prepareStatement.setString(2, lastName); prepareStatement.setInt(3, age); @@ -49,9 +49,10 @@ public void saveUser(String name, String lastName, byte age) { } public void removeUserById(long id) { - String del = String.format("DELETE FROM users.users where id = %d", id); - try (Statement statement = conn.createStatement()) { - statement.executeUpdate(del); + try (PreparedStatement preparedStatement = conn.prepareStatement("DELETE FROM" + + " users.users where id = ?")) { + preparedStatement.setInt(1, (int) id); + preparedStatement.executeUpdate(); System.out.println("Пользователь удалён!"); } catch (SQLException e) { e.printStackTrace(); @@ -78,9 +79,8 @@ public List getAllUsers() { } public void cleanUsersTable() { - String del = "DELETE FROM users.users"; try (Statement statement = conn.createStatement()) { - statement.executeUpdate(del); + statement.executeUpdate("DELETE FROM users.users"); System.out.println("Все пользователи удалены"); } catch (SQLException e) { e.printStackTrace(); From faf5f970749faf966bd308a3f0407bcad51277e2 Mon Sep 17 00:00:00 2001 From: vik Date: Tue, 30 Nov 2021 07:19:41 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=98=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5?= =?UTF-8?q?=D0=B9=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/jm/task/core/jdbc/Main.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java index d35af7c6..7f17f510 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -1,5 +1,6 @@ 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 java.util.ArrayList; @@ -12,7 +13,7 @@ public static void main(String[] args) { User user4 = new User("d", "dd", (byte) 23); - UserServiceImpl userService = new UserServiceImpl(); + UserService userService = new UserServiceImpl(); userService.createUsersTable(); userService.saveUser(user1.getName(), user1.getLastName(), user1.getAge()); userService.saveUser(user2.getName(), user2.getLastName(), user2.getAge()); @@ -25,9 +26,5 @@ public static void main(String[] args) { userService.removeUserById(2); userService.cleanUsersTable(); userService.dropUsersTable(); - - - - } } From 7a3b16872015597a3d8e8968dba9f1ce43b4f3e0 Mon Sep 17 00:00:00 2001 From: vik Date: Tue, 30 Nov 2021 07:23:10 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5?= =?UTF-8?q?=D0=B9=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/core/jdbc/service/UserServiceImpl.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) 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 ab659c47..d9cb8ca1 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -1,33 +1,34 @@ package jm.task.core.jdbc.service; +import jm.task.core.jdbc.dao.UserDao; import jm.task.core.jdbc.dao.UserDaoJDBCImpl; import jm.task.core.jdbc.model.User; import java.util.List; public class UserServiceImpl implements UserService { - UserDaoJDBCImpl userDaoJDBC = new UserDaoJDBCImpl(); + UserDao userDao = new UserDaoJDBCImpl(); public void createUsersTable() { - userDaoJDBC.createUsersTable(); + userDao.createUsersTable(); } public void dropUsersTable() { - userDaoJDBC.dropUsersTable(); + userDao.dropUsersTable(); } public void saveUser(String name, String lastName, byte age) { - userDaoJDBC.saveUser(name, lastName, age); + userDao.saveUser(name, lastName, age); } public void removeUserById(long id) { - userDaoJDBC.removeUserById(id); + userDao.removeUserById(id); } public List getAllUsers() { - return userDaoJDBC.getAllUsers(); + return userDao.getAllUsers(); } public void cleanUsersTable() { - userDaoJDBC.cleanUsersTable(); + userDao.cleanUsersTable(); } } From 46426ca804f9577d50c3f1984cdeef0f7d8054bc Mon Sep 17 00:00:00 2001 From: vik Date: Thu, 2 Dec 2021 19:16:09 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- src/main/java/jm/task/core/jdbc/Main.java | 27 +++--- .../core/jdbc/dao/UserDaoHibernateImpl.java | 93 +++++++++++++++++-- .../java/jm/task/core/jdbc/model/User.java | 11 +-- .../core/jdbc/service/UserServiceImpl.java | 3 +- .../java/jm/task/core/jdbc/util/Util.java | 29 +++++- 6 files changed, 134 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 0605a4c0..a8998290 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,6 @@ 4.12 test - mysql mysql-connector-java @@ -47,6 +46,5 @@ hibernate-core 4.3.10.Final - - + \ 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 7f17f510..e9867e60 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -4,26 +4,29 @@ import jm.task.core.jdbc.service.UserServiceImpl; import java.util.ArrayList; +import java.util.List; public class Main { public static void main(String[] args) { - User user1 = new User("a", "aa", (byte) 20); - User user2 = new User("b", "bb", (byte) 21); - User user3 = new User("c", "cc", (byte) 22); - User user4 = new User("d", "dd", (byte) 23); - - UserService userService = new UserServiceImpl(); userService.createUsersTable(); + + User user = new User("a", "aa", (byte) 00); + User user0 = new User("b", "bb", (byte) 11); + User user1 = new User("c", "cc", (byte) 22); + User user2 = new User("d", "dd", (byte) 33); + userService.saveUser(user.getName(), user.getLastName(), user.getAge()); + userService.saveUser(user0.getName(), user0.getLastName(), user0.getAge()); userService.saveUser(user1.getName(), user1.getLastName(), user1.getAge()); userService.saveUser(user2.getName(), user2.getLastName(), user2.getAge()); - userService.saveUser(user3.getName(), user3.getLastName(), user3.getAge()); - userService.saveUser(user4.getName(), user4.getLastName(), user4.getAge()); - ArrayList a = (ArrayList) userService.getAllUsers(); - for (User b : a) { - System.out.print(b.toString()); + + List list = userService.getAllUsers(); + for (User a : list) { + System.out.print(a.toString()); } - userService.removeUserById(2); + + userService.removeUserById(3); + userService.cleanUsersTable(); userService.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..ded60369 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java @@ -1,42 +1,115 @@ package jm.task.core.jdbc.dao; import jm.task.core.jdbc.model.User; - +import jm.task.core.jdbc.util.Util; +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; + +import javax.persistence.criteria.CriteriaBuilder; +import java.util.ArrayList; import java.util.List; public class UserDaoHibernateImpl implements UserDao { public UserDaoHibernateImpl() { - } - - + SessionFactory sessionFactory = Util.getSession(); @Override public void createUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("CREATE TABLE users.users" + + "(id int not null auto_increment," + + "name VARCHAR(50), " + + "lastname VARCHAR(50), " + + "age INT, " + + "PRIMARY KEY (id))").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Таблица создана"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public void dropUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("DROP TABLE users.users").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Таблица удалена"); + } catch (Exception e) { + e.getStackTrace(); + } finally { + session.close(); + } } @Override public void saveUser(String name, String lastName, byte age) { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.save(new User(name, lastName, age)); + session.beginTransaction().commit(); + System.out.print(String.format("Пользователь-%s добавлен!%n", name)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public void removeUserById(long id) { - + Session session = null; + User user = null; + try { + session = sessionFactory.openSession(); + user = (User) session.get(User.class, id); + session.delete(user); + session.beginTransaction().commit(); + System.out.print(String.format("Пользователь под номером %d - удален!%n", id)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public List getAllUsers() { - return null; + Session session = null; + List list = new ArrayList<>(); + try { + session = sessionFactory.openSession(); + Query qu = session.createSQLQuery("select id, name, lastName, age from users.users").addEntity(User.class); + list = qu.list(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } + return list; } @Override public void cleanUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("DELETE FROM users.users").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Все пользователи удалены!"); + } catch (Exception a) { + a.printStackTrace(); + } finally { + session.close(); + } } } 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 75e947fd..4357eb48 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -1,12 +1,12 @@ package jm.task.core.jdbc.model; -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.*; -@Table +@Entity +@Table(name = "users") public class User { @Id + @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column @@ -19,8 +19,7 @@ public class User { private Byte age; public User() { - - } +} @Override public String toString() { 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 d9cb8ca1..b2bc6d7f 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -1,13 +1,14 @@ 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 { - UserDao userDao = new UserDaoJDBCImpl(); + UserDao userDao = new UserDaoHibernateImpl(); public void createUsersTable() { userDao.createUsersTable(); } 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 5e197354..54286256 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,13 +1,22 @@ package jm.task.core.jdbc.util; +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.service.ServiceRegistry; + import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Util { - private final static String url = "jdbc:mysql://localhost:3306?esuSSL=false"; + private final static String url = "jdbc:mysql://localhost:3306/users?esuSSL=false"; private final static String us = "root"; private final static String pass = "12345"; + private static SessionFactory sessionFactory = null; + public Util() { + } public static Connection getConnection() { Connection connection = null; try { @@ -17,5 +26,23 @@ public static Connection getConnection() { } return connection; } + public static SessionFactory getSession() { + if (sessionFactory == null) { + try { + Configuration configuration = new Configuration() + .setProperty("hibernate.connection.url", url) + .setProperty("hibernate.connection.username", us) + .setProperty("hibernate.connection.password", pass) + .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect") + .addAnnotatedClass(User.class); + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySettings(configuration.getProperties()).build(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } catch (Throwable e) { + e.printStackTrace(); + } + } + return sessionFactory; + } // реализуйте настройку соеденения с БД } From c9693e75bc772f45cb2aba7e94d99cb167635371 Mon Sep 17 00:00:00 2001 From: vik Date: Thu, 2 Dec 2021 19:16:09 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- src/main/java/jm/task/core/jdbc/Main.java | 27 +++--- .../core/jdbc/dao/UserDaoHibernateImpl.java | 93 +++++++++++++++++-- .../java/jm/task/core/jdbc/model/User.java | 11 +-- .../core/jdbc/service/UserServiceImpl.java | 3 +- .../java/jm/task/core/jdbc/util/Util.java | 29 +++++- 6 files changed, 134 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 0605a4c0..a8998290 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,6 @@ 4.12 test - mysql mysql-connector-java @@ -47,6 +46,5 @@ hibernate-core 4.3.10.Final - - + \ 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 7f17f510..e9867e60 100644 --- a/src/main/java/jm/task/core/jdbc/Main.java +++ b/src/main/java/jm/task/core/jdbc/Main.java @@ -4,26 +4,29 @@ import jm.task.core.jdbc.service.UserServiceImpl; import java.util.ArrayList; +import java.util.List; public class Main { public static void main(String[] args) { - User user1 = new User("a", "aa", (byte) 20); - User user2 = new User("b", "bb", (byte) 21); - User user3 = new User("c", "cc", (byte) 22); - User user4 = new User("d", "dd", (byte) 23); - - UserService userService = new UserServiceImpl(); userService.createUsersTable(); + + User user = new User("a", "aa", (byte) 00); + User user0 = new User("b", "bb", (byte) 11); + User user1 = new User("c", "cc", (byte) 22); + User user2 = new User("d", "dd", (byte) 33); + userService.saveUser(user.getName(), user.getLastName(), user.getAge()); + userService.saveUser(user0.getName(), user0.getLastName(), user0.getAge()); userService.saveUser(user1.getName(), user1.getLastName(), user1.getAge()); userService.saveUser(user2.getName(), user2.getLastName(), user2.getAge()); - userService.saveUser(user3.getName(), user3.getLastName(), user3.getAge()); - userService.saveUser(user4.getName(), user4.getLastName(), user4.getAge()); - ArrayList a = (ArrayList) userService.getAllUsers(); - for (User b : a) { - System.out.print(b.toString()); + + List list = userService.getAllUsers(); + for (User a : list) { + System.out.print(a.toString()); } - userService.removeUserById(2); + + userService.removeUserById(3); + userService.cleanUsersTable(); userService.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..ded60369 100644 --- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java +++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java @@ -1,42 +1,115 @@ package jm.task.core.jdbc.dao; import jm.task.core.jdbc.model.User; - +import jm.task.core.jdbc.util.Util; +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; + +import javax.persistence.criteria.CriteriaBuilder; +import java.util.ArrayList; import java.util.List; public class UserDaoHibernateImpl implements UserDao { public UserDaoHibernateImpl() { - } - - + SessionFactory sessionFactory = Util.getSession(); @Override public void createUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("CREATE TABLE users.users" + + "(id int not null auto_increment," + + "name VARCHAR(50), " + + "lastname VARCHAR(50), " + + "age INT, " + + "PRIMARY KEY (id))").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Таблица создана"); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public void dropUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("DROP TABLE users.users").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Таблица удалена"); + } catch (Exception e) { + e.getStackTrace(); + } finally { + session.close(); + } } @Override public void saveUser(String name, String lastName, byte age) { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.save(new User(name, lastName, age)); + session.beginTransaction().commit(); + System.out.print(String.format("Пользователь-%s добавлен!%n", name)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public void removeUserById(long id) { - + Session session = null; + User user = null; + try { + session = sessionFactory.openSession(); + user = (User) session.get(User.class, id); + session.delete(user); + session.beginTransaction().commit(); + System.out.print(String.format("Пользователь под номером %d - удален!%n", id)); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } } @Override public List getAllUsers() { - return null; + Session session = null; + List list = new ArrayList<>(); + try { + session = sessionFactory.openSession(); + Query qu = session.createSQLQuery("select id, name, lastName, age from users.users").addEntity(User.class); + list = qu.list(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + session.close(); + } + return list; } @Override public void cleanUsersTable() { - + Session session = null; + try { + session = sessionFactory.openSession(); + session.createSQLQuery("DELETE FROM users.users").executeUpdate(); + session.beginTransaction().commit(); + System.out.println("Все пользователи удалены!"); + } catch (Exception a) { + a.printStackTrace(); + } finally { + session.close(); + } } } 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 75e947fd..4357eb48 100644 --- a/src/main/java/jm/task/core/jdbc/model/User.java +++ b/src/main/java/jm/task/core/jdbc/model/User.java @@ -1,12 +1,12 @@ package jm.task.core.jdbc.model; -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.*; -@Table +@Entity +@Table(name = "users") public class User { @Id + @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column @@ -19,8 +19,7 @@ public class User { private Byte age; public User() { - - } +} @Override public String toString() { 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 d9cb8ca1..b2bc6d7f 100644 --- a/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java +++ b/src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java @@ -1,13 +1,14 @@ 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 { - UserDao userDao = new UserDaoJDBCImpl(); + UserDao userDao = new UserDaoHibernateImpl(); public void createUsersTable() { userDao.createUsersTable(); } 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 5e197354..54286256 100644 --- a/src/main/java/jm/task/core/jdbc/util/Util.java +++ b/src/main/java/jm/task/core/jdbc/util/Util.java @@ -1,13 +1,22 @@ package jm.task.core.jdbc.util; +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.service.ServiceRegistry; + import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Util { - private final static String url = "jdbc:mysql://localhost:3306?esuSSL=false"; + private final static String url = "jdbc:mysql://localhost:3306/users?esuSSL=false"; private final static String us = "root"; private final static String pass = "12345"; + private static SessionFactory sessionFactory = null; + public Util() { + } public static Connection getConnection() { Connection connection = null; try { @@ -17,5 +26,23 @@ public static Connection getConnection() { } return connection; } + public static SessionFactory getSession() { + if (sessionFactory == null) { + try { + Configuration configuration = new Configuration() + .setProperty("hibernate.connection.url", url) + .setProperty("hibernate.connection.username", us) + .setProperty("hibernate.connection.password", pass) + .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect") + .addAnnotatedClass(User.class); + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() + .applySettings(configuration.getProperties()).build(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } catch (Throwable e) { + e.printStackTrace(); + } + } + return sessionFactory; + } // реализуйте настройку соеденения с БД }