diff --git a/pom.xml b/pom.xml
index 0605a4c0..350c0976 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,27 +13,40 @@
org.apache.maven.plugins
maven-compiler-plugin
- 7
- 7
+ 8
+ 8
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.9.1
+
+ UTF-8
+ UTF-8
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 3.1.2
+
-
-
-
- junit
- junit
- 4.12
- test
-
+
+ junit
+ junit
+ 4.12
+ test
+
mysql
mysql-connector-java
- 5.1.38
+ 8.0.25
@@ -45,8 +58,7 @@
org.hibernate
hibernate-core
- 4.3.10.Final
+ 5.5.2.Final
-
-
+
\ No newline at end of file
diff --git a/src/main/Resources/mysql_config b/src/main/Resources/mysql_config
new file mode 100644
index 00000000..8707336c
--- /dev/null
+++ b/src/main/Resources/mysql_config
@@ -0,0 +1,6 @@
+db.driver = mysql://
+db.host = localhost
+db.port = :3306
+db.base = /jm-base-module-one
+db.login = jm-admin
+db.password = !Jmc0urs3
\ 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..4faabca6 100644
--- a/src/main/java/jm/task/core/jdbc/Main.java
+++ b/src/main/java/jm/task/core/jdbc/Main.java
@@ -1,7 +1,85 @@
package jm.task.core.jdbc;
+import jm.task.core.jdbc.model.User;
+import jm.task.core.jdbc.service.*;
+import jm.task.core.jdbc.util.Util;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+
public class Main {
- public static void main(String[] args) {
- // реализуйте алгоритм здесь
+ public static void main(String[] args) throws SQLException {
+ UserService service = new UserServiceImpl();
+ UserService service2 = new UserServiceHibernateImpl();
+ Connection connection = Util.connect();
+ Util.printConnectionInfo(connection);
+
+ service.createUsersTable();
+ getUsers(service);
+ System.out.println("\nДобавляем пользователей...");
+ service.saveUser("Тимур", "Батрутдинов", (byte) 38);
+ service.saveUser("Гарик", "Мартиросян", (byte) 44);
+ service.saveUser("Гарик", "Мартиросян", (byte) 44);
+ service.saveUser("Павел", "Воля", (byte) 40);
+ service.saveUser("Гарик", "Харламов", (byte) 44);
+ service.saveUser("Семен", "Слепаков", (byte) 41);
+ System.out.println();
+ getUsers(service);
+
+ System.out.print("\nУдаляем пользователя с номером id 3");
+ service2.removeUserById(3);
+ getUsers(service);
+
+ System.out.println("\nМеняем данные пользователя с номером id 4");
+ service2.updateUser(4, "Нурлан", "Сабуров", (byte) 36);
+ getUsers(service);
+
+ System.out.println("\nОчищаем и удаляем таблицу пользователей");
+ service.cleanUsersTable();
+ getUsers(service);
+ service.dropUsersTable();
+
+
+
+
+ service2.createUsersTable();
+ getUsers(service2);
+ System.out.println("Добавляем пользователей...");
+ service2.saveUser("Тимур", "Батрутдинов", (byte) 44);
+ service2.saveUser("Гарик", "Мартиросян", (byte) 44);
+ service2.saveUser("Гарик", "Харламов", (byte) 44);
+ service2.saveUser("Павел", "Воля", (byte) 40);
+ service2.saveUser("Гарик", "Мартиросян", (byte) 44);
+ service2.saveUser("Семен", "Слепаков", (byte) 41);
+ getUsers(service2);
+
+ System.out.print("\nУдаляем пользователя с номером id 3");
+ service2.removeUserById(3);
+ getUsers(service2);
+
+ System.out.println("\nМеняем данные пользователя с номером id 4");
+ service2.updateUser(4, "Нурлан", "Сабуров", (byte) 36);
+ getUsers(service2);
+
+ System.out.println("Очищаем и удаляем таблицу пользователей");
+ service2.cleanUsersTable();
+ getUsers(service2);
+ service2.dropUsersTable();
+ }
+
+ private static void getUsers(UserService service) {
+ List users = service.getAllUsers();
+ if (users.isEmpty()) {
+ System.out.printf("\nТекущее количество пользователей пользователей: %d\n", 0);
+ } else {
+ System.out.printf("\nТекущее количество пользователей пользователей: %d\n", users.size());
+ System.out.printf("%-9s%s\n", "", "ТАБЛИЦА ПОЛЬЗОВАТЕЛЕЙ");
+ System.out.printf("%-1s%-6s%-10s%-15s%s\n", "", "ID", "ИМЯ", "ФАМИЛМЯ", "ВОЗРАСТ");
+ System.out.println("----:-------:-----------------:--------:");
+ users.stream()
+ .sorted((u1, u2) -> u1.getName().compareToIgnoreCase(u2.getName()))
+ .forEach(System.out::println);
+ }
}
}
diff --git a/src/main/java/jm/task/core/jdbc/SqlQuery.java b/src/main/java/jm/task/core/jdbc/SqlQuery.java
new file mode 100644
index 00000000..cd6ee787
--- /dev/null
+++ b/src/main/java/jm/task/core/jdbc/SqlQuery.java
@@ -0,0 +1,24 @@
+package jm.task.core.jdbc;
+
+public enum SqlQuery {
+ CREATE("CREATE TABLE IF NOT EXISTS users (id BIGINT AUTO_INCREMENT UNIQUE NOT NULL, name VARCHAR(45), lastName VARCHAR(45), age INT, PRIMARY KEY (id))"),
+ DROP("DROP TABLE IF EXISTS users CASCADE"),
+ SELECT("SELECT * FROM users"),
+ SELECT_USER("SELECT * FROM users WHERE name = ? AND lastName = ? AND age = ?"),
+ SELECT_BY_ID("SELECT * FROM users WHERE id = ?"),
+ INSERT("INSERT INTO users (name, lastName, age) VALUES (?, ?, ?)"),
+ UPDATE_USER("UPDATE users SET name = ?, lastName = ?, age = ? WHERE id = ?"),
+ DELETE("DELETE FROM users WHERE id = ?"),
+ TRUNCATE("TRUNCATE TABLE users");
+
+ String query;
+
+ SqlQuery(String query) {
+ this.query = query;
+ }
+
+ @Override
+ public String toString() {
+ return query;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/jm/task/core/jdbc/dao/UserDao.java b/src/main/java/jm/task/core/jdbc/dao/UserDao.java
index 27069baf..bfbac1f7 100644
--- a/src/main/java/jm/task/core/jdbc/dao/UserDao.java
+++ b/src/main/java/jm/task/core/jdbc/dao/UserDao.java
@@ -2,18 +2,21 @@
import jm.task.core.jdbc.model.User;
+import java.sql.SQLException;
import java.util.List;
public interface UserDao {
- void createUsersTable();
+ void createUsersTable() throws SQLException;
- void dropUsersTable();
+ void dropUsersTable() throws SQLException;
- void saveUser(String name, String lastName, byte age);
+ void saveUser(String name, String lastName, byte age) throws SQLException;
- void removeUserById(long id);
+ void removeUserById(long id) throws SQLException;
+
+ void updateUser(long id, String name, String lastName, byte age);
List getAllUsers();
- void cleanUsersTable();
+ void cleanUsersTable() throws SQLException;
}
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..79dc240d 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,160 @@
package jm.task.core.jdbc.dao;
+import jm.task.core.jdbc.SqlQuery;
import jm.task.core.jdbc.model.User;
-
+import jm.task.core.jdbc.util.Util;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import javax.persistence.Query;
import java.util.List;
public class UserDaoHibernateImpl implements UserDao {
+
+ private static final String CREATE_TABLE = SqlQuery.CREATE.toString();
+ private static final String DROP_TABLE = SqlQuery.DROP.toString();
+ private static final String TRUNCATE_TABLE = SqlQuery.TRUNCATE.toString();
+ private static final String SELECT_ALL = SqlQuery.SELECT.toString();
+ private static final String SELECT_USER = SqlQuery.SELECT_USER.toString();
+ private static final String SELECT_USER_ID = SqlQuery.SELECT_BY_ID.toString();
+ private static final String INSERT_USER = SqlQuery.INSERT.toString();
+ private static final String UPDATE_USER = SqlQuery.UPDATE_USER.toString();
+ private static final String DELETE_USER = SqlQuery.DELETE.toString();
public UserDaoHibernateImpl() {
}
-
-
@Override
public void createUsersTable() {
-
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(CREATE_TABLE);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
}
@Override
public void dropUsersTable() {
-
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(DROP_TABLE);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
}
@Override
public void saveUser(String name, String lastName, byte age) {
-
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ Query select = session.createSQLQuery(SELECT_USER);
+ select.setParameter(1, name)
+ .setParameter(2, lastName)
+ .setParameter(3, age);
+ if (((org.hibernate.query.Query)select).list().isEmpty()) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(INSERT_USER);
+ query.setParameter(1, name)
+ .setParameter(2, lastName)
+ .setParameter(3, age);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ System.out.printf("\nПользователь %s %s успешно добавлен.", lastName, name);
+ } else {
+ System.err.println("\nТакой пользователь уже существует.");
+ }
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
}
@Override
public void removeUserById(long id) {
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(DELETE_USER);
+ query.setParameter(1, id);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
+ }
+ @Override
+ public void updateUser(long id, String name, String lastName, byte age) {
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ Query select = session.createSQLQuery(SELECT_USER_ID);
+ select.setParameter(1, id);
+ if (((org.hibernate.query.Query)select).list().isEmpty()) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(UPDATE_USER);
+ query.setParameter(1, name)
+ .setParameter(2, lastName)
+ .setParameter(3, age);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ System.out.println("Данные успешно изменены.");
+ } else {
+ System.out.println("В процессе изменения данных произошла ошибка.");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
@Override
public List getAllUsers() {
- return null;
+ List users = null;
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ session.beginTransaction();
+ users = session.createNativeQuery(SELECT_ALL, User.class).list();
+ session.getTransaction().commit();
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
+ return users;
}
@Override
public void cleanUsersTable() {
+ Session session = Util.getSessionFactory().openSession();
+ try {
+ if (session != null) {
+ session.beginTransaction();
+ Query query = session.createSQLQuery(TRUNCATE_TABLE);
+ query.executeUpdate();
+ session.getTransaction().commit();
+ session.close();
+ }
+ } catch (HibernateException e) {
+ e.printStackTrace();
+ }
}
}
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..d46e79e6 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,177 @@
package jm.task.core.jdbc.dao;
+import jm.task.core.jdbc.SqlQuery;
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() {
+ private static String CREATE_TABLE = SqlQuery.CREATE.toString();
+ private static String DROP_TABLE = SqlQuery.DROP.toString();
+ private static String TRUNCATE_TABLE = SqlQuery.TRUNCATE.toString();
+ private static String SELECT_ALL = SqlQuery.SELECT.toString();
+ private static String SELECT_USER = SqlQuery.SELECT_USER.toString();
+ private static String SELECT_USER_ID = SqlQuery.SELECT_BY_ID.toString();
+ private static String INSERT_USER = SqlQuery.INSERT.toString();
+ private static String UPDATE_USER = SqlQuery.UPDATE_USER.toString();
+ private static String DELETE_USER = SqlQuery.DELETE.toString();
+
+ public UserDaoJDBCImpl() {
}
+ @Override
public void createUsersTable() {
-
+ Connection connection = Util.connect();
+ try (Statement statement = connection.createStatement()) {
+ statement.executeUpdate(CREATE_TABLE);
+ connection.close();
+ } catch (SQLException e) {
+ e.getSQLState();
+ }
}
+ @Override
public void dropUsersTable() {
-
+ Connection connection = Util.connect();
+ try (Statement statement = connection.createStatement()) {
+ statement.execute(DROP_TABLE);
+ connection.close();
+ } catch (SQLException e) {
+ e.getSQLState();
+ }
}
+ @Override
public void saveUser(String name, String lastName, byte age) {
-
+ Connection connection = Util.connect();
+ PreparedStatement pstm = null;
+ try {
+ pstm = connection.prepareStatement(SELECT_USER);
+ pstm.setString(1, name);
+ pstm.setString(2, lastName);
+ pstm.setByte(3, age);
+ ResultSet result = pstm.executeQuery();
+ if (result.next()) {
+ System.err.print("\nТакой пользователь уже существует.");
+ pstm.close();
+ } else {
+ pstm = connection.prepareStatement(INSERT_USER);
+ pstm.setString(1, name);
+ pstm.setString(2, lastName);
+ pstm.setByte(3, age);
+ int i = pstm.executeUpdate();
+ if (i > 0) {
+ System.out.printf("\nПользователь %s %s добавлен в таблицу.\n", lastName, name);
+ } else {
+ System.err.println("\nНе удалось добавить пользователя.");
+ }
+ pstm.close();
+ }
+ connection.close();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
+ @Override
public void removeUserById(long id) {
+ Connection connection = Util.connect();
+ PreparedStatement pstm = null;
+ try {
+ pstm = connection.prepareStatement(SELECT_USER_ID);
+ pstm.setLong(1, id);
+ ResultSet result = pstm.executeQuery();
+ if (result.next()) {
+ String name = result.getString("name");
+ String lastName = result.getString("lastName");
+ pstm = connection.prepareStatement(DELETE_USER);
+ pstm.setLong(1, id);
+ int i = pstm.executeUpdate();
+ String answer = i > 0 ? String.format("\nПользователь %s %s успешно удален\n", lastName, name)
+ : "Пользователя с таким ID не существует.";
+ System.out.println(answer);
+ } else {
+ System.out.println("Ошибка соединения");
+ }
+ pstm.close();
+ connection.close();
+ } catch (SQLException e) {
+ e.getSQLState();
+ }
+ }
+ @Override
+ public void updateUser(long id, String name, String lastName, byte age) {
+ Connection connection = Util.connect();
+ PreparedStatement pstm = null;
+ try {
+ connection.setAutoCommit(false);
+ pstm = connection.prepareStatement(SELECT_USER_ID);
+ pstm.setLong(1, id);
+ ResultSet response = pstm.executeQuery();
+ if (response.next()) {
+ String oldUserName = response.getString("name");
+ String oldUserLastName = response.getString("lastname");
+ pstm = connection.prepareStatement(UPDATE_USER);
+ pstm.setString(1, name);
+ pstm.setString(2, lastName);
+ pstm.setByte(3, age);
+ pstm.setLong(4, id);
+ int i = pstm.executeUpdate();
+ connection.commit();
+ String answer = i > 0 ? String.format("Данные пользователя %s %s успешно изменены." +
+ "\nТекущие данные пользователя с id %d:\nФамилия: %s Имя: %s, возраст: %d.\n",
+ oldUserLastName, oldUserName, id, lastName, name, age)
+ : "\nНе удалось обновить данные пользователя.";
+ System.out.println(answer);
+ connection.close();
+ } else {
+ System.out.println("Ошибка соединения");
+ }
+ } catch (SQLException e) {
+ try {
+ if (connection != null) {
+ System.err.print("Выполняется откат транзакции");
+ connection.rollback();
+ }
+ } catch (SQLException throwables) {
+ e.printStackTrace();
+ }
+ }
}
+ @Override
public List getAllUsers() {
- return null;
+ List all = new ArrayList<>();
+ Connection connection = Util.connect();
+ try (Statement statement = connection.createStatement()) {
+ ResultSet response = statement.executeQuery(SELECT_ALL);
+ while (response.next()) {
+ User user = new User();
+ user.setId(response.getLong("id"));
+ user.setName(response.getString("name"));
+ user.setLastName(response.getString("lastName"));
+ user.setAge(response.getByte("age"));
+ all.add(user);
+ }
+ connection.close();
+ } catch (SQLException e) {
+ e.getSQLState();
+ }
+ return all;
}
+ @Override
public void cleanUsersTable() {
-
+ Connection connection = Util.connect();
+ try (Statement statement = connection.createStatement()) {
+ statement.executeUpdate(TRUNCATE_TABLE);
+ connection.close();
+ } catch (SQLException e) {
+ e.getSQLState();
+ }
}
}
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..1125a4ac 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,18 @@
package jm.task.core.jdbc.model;
-import javax.persistence.Column;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
+import javax.persistence.*;
+import java.io.Serializable;
+@Entity
@Table
-public class User {
+public class User implements Serializable {
+
@Id
private Long id;
- @Column
private String name;
- @Column
private String lastName;
- @Column
private Byte age;
public User() {
@@ -59,4 +56,11 @@ public Byte getAge() {
public void setAge(Byte age) {
this.age = age;
}
+
+ @Override
+ public String toString() {
+ return String.format("%-1s%-5d%-10s%-17s %d\n" +
+ "----:-------:-----------------:--------:",
+ "", this.id, this.name, this.lastName, this.age);
+ }
}
diff --git a/src/main/java/jm/task/core/jdbc/service/UserService.java b/src/main/java/jm/task/core/jdbc/service/UserService.java
index 80542c68..733778f2 100644
--- a/src/main/java/jm/task/core/jdbc/service/UserService.java
+++ b/src/main/java/jm/task/core/jdbc/service/UserService.java
@@ -2,18 +2,21 @@
import jm.task.core.jdbc.model.User;
+import java.sql.SQLException;
import java.util.List;
public interface UserService {
- void createUsersTable();
+ void createUsersTable() throws SQLException;
- void dropUsersTable();
+ void dropUsersTable() throws SQLException;
- void saveUser(String name, String lastName, byte age);
+ void saveUser(String name, String lastName, byte age) throws SQLException;
- void removeUserById(long id);
+ void removeUserById(long id) throws SQLException;
List getAllUsers();
- void cleanUsersTable();
+ void cleanUsersTable() throws SQLException;
+
+ void updateUser(long id, String name, String lastName, byte age);
}
diff --git a/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java b/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java
new file mode 100644
index 00000000..37635f6b
--- /dev/null
+++ b/src/main/java/jm/task/core/jdbc/service/UserServiceHibernateImpl.java
@@ -0,0 +1,46 @@
+package jm.task.core.jdbc.service;
+
+import jm.task.core.jdbc.dao.*;
+import jm.task.core.jdbc.model.User;
+
+import java.sql.SQLException;
+import java.util.List;
+
+public class UserServiceHibernateImpl implements UserService {
+ private final UserDao hQuery = new UserDaoHibernateImpl();
+
+ @Override
+ public void createUsersTable() throws SQLException {
+ hQuery.createUsersTable();
+ }
+
+ @Override
+ public void dropUsersTable() throws SQLException {
+ hQuery.dropUsersTable();
+ }
+
+ @Override
+ public void saveUser(String name, String lastName, byte age) throws SQLException {
+ hQuery.saveUser(name, lastName, age);
+ }
+
+ @Override
+ public void removeUserById(long id) throws SQLException {
+ hQuery.removeUserById(id);
+ }
+
+ @Override
+ public void updateUser(long id, String name, String lastName, byte age) {
+ hQuery.updateUser(id, name, lastName, age);
+ }
+
+ @Override
+ public List getAllUsers() {
+ return hQuery.getAllUsers();
+ }
+
+ @Override
+ public void cleanUsersTable() throws SQLException {
+ hQuery.cleanUsersTable();
+ }
+}
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..078d3c5a 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,53 @@
package jm.task.core.jdbc.service;
+import jm.task.core.jdbc.dao.*;
import jm.task.core.jdbc.model.User;
+import java.sql.SQLException;
import java.util.List;
public class UserServiceImpl implements UserService {
- public void createUsersTable() {
+ private final UserDao query = new UserDaoJDBCImpl();
+ private final UserDao hQuery = new UserDaoHibernateImpl();
+ @Override
+ public void createUsersTable() throws SQLException {
+ query.createUsersTable();
+ hQuery.createUsersTable();
}
- public void dropUsersTable() {
-
+ @Override
+ public void dropUsersTable() throws SQLException {
+ query.dropUsersTable();
+ hQuery.dropUsersTable();
}
- public void saveUser(String name, String lastName, byte age) {
-
+ @Override
+ public void saveUser(String name, String lastName, byte age) throws SQLException {
+ query.saveUser(name, lastName, age);
+ hQuery.saveUser(name, lastName, age);
}
- public void removeUserById(long id) {
+ @Override
+ public void removeUserById(long id) throws SQLException {
+ query.removeUserById(id);
+ hQuery.removeUserById(id);
+ }
+ @Override
+ public void updateUser(long id, String name, String lastName, byte age) {
+ query.updateUser(id, name, lastName, age);
+ hQuery.updateUser(id, name, lastName, age);
}
+ @Override
public List getAllUsers() {
- return null;
+ return hQuery.getAllUsers();
}
- public void cleanUsersTable() {
-
+ @Override
+ public void cleanUsersTable() throws SQLException {
+ query.cleanUsersTable();
+ hQuery.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..601e271f 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,86 @@
package jm.task.core.jdbc.util;
+import jm.task.core.jdbc.model.User;
+import org.hibernate.SessionFactory;
+import org.hibernate.boot.Metadata;
+import org.hibernate.boot.MetadataSources;
+import org.hibernate.boot.registry.StandardServiceRegistry;
+import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
+import org.hibernate.cfg.Environment;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+
public class Util {
- // реализуйте настройку соеденения с БД
-}
+ private static SessionFactory sessionFactory;
+ private static Connection connection;
+ private static String user;
+ public static Connection connect() {
+ Properties property = new Properties();
+ try (FileInputStream input = new FileInputStream("src/main/Resources/mysql_config")) {
+ property.load(input);
+ user = property.getProperty("db.login");
+ String password = property.getProperty("db.password");
+
+ Class.forName("com.mysql.cj.jdbc.Driver");
+ StringBuilder url = new StringBuilder();
+ url.append("jdbc:")
+ .append(property.getProperty("db.driver"))
+ .append(property.getProperty("db.host"))
+ .append(property.getProperty("db.port"))
+ .append(property.getProperty("db.base"));
+ connection = DriverManager.getConnection(url.toString(), user, password);
+ } catch (SQLException | ClassNotFoundException | IOException e) {
+ e.printStackTrace();
+ }
+ return connection;
+ }
+
+ public static void printConnectionInfo(Connection connection) throws SQLException {
+ System.out.println(new Date());
+ System.out.printf("Текущий ползователь: %s\n", user);
+ System.out.printf("Data base: %s\n", connection.getMetaData().getDatabaseProductName());
+ System.out.printf("version: %s\n", connection.getMetaData().getDatabaseProductVersion());
+ System.out.printf("Driver: %s\n", connection.getMetaData().getDriverName());
+ System.out.printf("Autocommit: %s\n", connection.getAutoCommit());
+ System.out.println("------------------------------------------------");
+ }
+
+ public static SessionFactory getSessionFactory() {
+ if (sessionFactory == null) {
+ try {
+ StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();
+
+ Map settings = new HashMap<>();
+ settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
+ settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL8Dialect");
+ settings.put(Environment.URL, "jdbc:mysql://localhost:3306/jm-base-module-one");
+ settings.put(Environment.USER, "jm-admin");
+ settings.put(Environment.PASS, "!Jmc0urs3");
+ settings.put(Environment.ORDER_UPDATES, true);
+ settings.put(Environment.HBM2DDL_AUTO, "validate");
+ settings.put(Environment.SHOW_SQL, true);
+
+ registryBuilder.applySettings(settings);
+ StandardServiceRegistry registry = registryBuilder.build();
+
+ MetadataSources sources = new MetadataSources(registry);
+ sources.addAnnotatedClass(User.class);
+ Metadata metadata = sources.getMetadataBuilder().build();
+
+ sessionFactory = metadata.getSessionFactoryBuilder().build();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return sessionFactory;
+ }
+}
\ No newline at end of file