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/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 f6e43b0f..e9867e60 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.UserService; +import jm.task.core.jdbc.service.UserServiceImpl; + +import java.util.ArrayList; +import java.util.List; public class Main { public static void main(String[] args) { - // реализуйте алгоритм здесь + 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()); + + List list = userService.getAllUsers(); + for (User a : list) { + System.out.print(a.toString()); + } + + 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/dao/UserDaoJDBCImpl.java b/src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java index a6c6c359..252f01c2 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) { - + 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); + prepareStatement.executeUpdate(); + System.out.printf("Пользователь-%s, добавлен!%n", name); + } catch (SQLException e) { + e.printStackTrace(); + } } public void removeUserById(long id) { - + 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(); + } } 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() { - + try (Statement statement = conn.createStatement()) { + statement.executeUpdate("DELETE FROM users.users"); + 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..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,7 +19,11 @@ public class User { private Byte age; public User() { +} + @Override + public String toString() { + return String.format("имя-%s, фамилия-%s, возраст-%d%n", name, lastName, age); } public User(String name, String lastName, Byte age) { @@ -59,4 +63,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..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,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 { + UserDao userDao = new UserDaoHibernateImpl(); public void createUsersTable() { - + userDao.createUsersTable(); } public void dropUsersTable() { - + userDao.dropUsersTable(); } public void saveUser(String name, String lastName, byte age) { - + userDao.saveUser(name, lastName, age); } public void removeUserById(long id) { - + userDao.removeUserById(id); } public List getAllUsers() { - return null; + return userDao.getAllUsers(); } public void cleanUsersTable() { - + userDao.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..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,5 +1,48 @@ 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/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 { + connection = DriverManager.getConnection(url, us, pass); + } catch (SQLException e) { + e.printStackTrace(); + } + 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; + } // реализуйте настройку соеденения с БД }