diff --git a/pom.xml b/pom.xml
index 0605a4c0..b90275b0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@
mysql
mysql-connector-java
- 5.1.38
+ 8.0.25
@@ -49,4 +49,4 @@
-
\ No newline at end of file
+
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..31375052 100644
--- a/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
+++ b/src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
@@ -1,6 +1,11 @@
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.SQLQuery;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
import java.util.List;
@@ -12,31 +17,64 @@ public UserDaoHibernateImpl() {
@Override
public void createUsersTable() {
-
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();
+ SQLQuery query = session.createSQLQuery("CREATE TABLE IF NOT EXISTS `newBD`.`users` " +
+ "(`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(45) NOT NULL," +
+ "`lastName` VARCHAR(45) NOT NULL,`age` INT NOT NULL," +
+ " PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE);").addEntity(User.class);
+ query.executeUpdate();
+ tx1.commit();
+ session.close();
}
@Override
public void dropUsersTable() {
-
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();
+ SQLQuery query = session.createSQLQuery("DROP TABLE if EXISTS users").addEntity(User.class);
+ query.executeUpdate();
+ tx1.commit();
+ session.close();
}
@Override
public void saveUser(String name, String lastName, byte age) {
-
+ User user = new User(name,lastName,age);
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();//получил транзакцию
+ session.save(user);
+ tx1.commit();
+ session.close();
}
@Override
public void removeUserById(long id) {
-
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();//получил транзакцию
+ Query query = session.createQuery("DELETE User WHERE id = :id");
+ query.setParameter("id", id).executeUpdate();
+ tx1.commit();
+ session.close();
}
@Override
public List getAllUsers() {
- return null;
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();//получил транзакцию
+ Query query = session.createQuery("FROM User");
+ List users = query.list();
+ tx1.commit();
+ session.close();
+ return users;
}
@Override
public void cleanUsersTable() {
-
+ Session session = Util.getSessionFactory().openSession();//открыли сессию
+ Transaction tx1 = session.beginTransaction();//получил транзакцию
+ session.createQuery("DELETE FROM User").executeUpdate();
+ tx1.commit();
+ 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..a66f3878 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,137 @@
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() {
+ private final Connection connection;
+ public UserDaoJDBCImpl() {
+ connection = Util.util();
}
public void createUsersTable() {
-
+ try(Statement statement = connection.createStatement()) {
+ connection.setAutoCommit(false);
+ statement.execute("CREATE TABLE IF NOT EXISTS `newBD`.`users` " +
+ "(`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(45) NOT NULL," +
+ "`lastName` VARCHAR(45) NOT NULL,`age` INT NOT NULL," +
+ " PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE);");
+ connection.commit();
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ throwables.printStackTrace();
+ }
}
public void dropUsersTable() {
-
+ try(Statement statement = connection.createStatement()) {
+ connection.setAutoCommit(false);
+ statement.execute("DROP TABLE if EXISTS users");
+ connection.commit();
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ throwables.printStackTrace();
+ }
}
public void saveUser(String name, String lastName, byte age) {
-
+ try (PreparedStatement preparedStatement =
+ connection.prepareStatement("INSERT INTO users (name, lastName, age) VALUES (?, ?, ?)")){
+ connection.setAutoCommit(false);
+ preparedStatement.setString(1, name);
+ preparedStatement.setString(2, lastName);
+ preparedStatement.setInt(3, age);
+ preparedStatement.execute();
+ connection.commit();
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ throwables.printStackTrace();
+ }
}
public void removeUserById(long id) {
+ try (PreparedStatement preparedStatement
+ = connection.prepareStatement("delete from users WHERE EXISTS id = ?")){
+ connection.setAutoCommit(false);
+ preparedStatement.setInt(1, (int) id);
+ preparedStatement.executeUpdate();
+ connection.commit();
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ throwables.printStackTrace();
+ }
}
public List getAllUsers() {
- return null;
+
+ List users = new ArrayList<>();
+ try (PreparedStatement preparedStatement = connection.prepareStatement("select * from users")){
+ connection.setAutoCommit(false);
+ ResultSet resultSet = preparedStatement.executeQuery();
+ connection.commit();
+ while (resultSet.next()){
+ User user = new User(resultSet.getString("name"),
+ resultSet.getString("lastName"),resultSet.getByte("age"));
+ user.setId((long) resultSet.getInt("id"));
+ users.add(user);
+ }
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ throwables.printStackTrace();
+ }
+ return users;
}
public void cleanUsersTable() {
-
+ try(Statement statement = connection.createStatement()) {
+ connection.setAutoCommit(false);
+ statement.execute("delete from users");
+ connection.commit();
+ } catch (SQLException throwables) {
+ if (connection != null) {
+ try {
+ connection.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+ 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..e0e8e467 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.IDENTITY)
private Long id;
@Column
@@ -59,4 +59,14 @@ public Byte getAge() {
public void setAge(Byte age) {
this.age = age;
}
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", lastName='" + lastName + '\'' +
+ ", 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..a073a345 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,36 @@
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 {
- public void createUsersTable() {
+ UserDao userDao = new UserDaoJDBCImpl();
+ //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/Test.txt b/src/main/java/jm/task/core/jdbc/util/Test.txt
new file mode 100644
index 00000000..42cc6a51
--- /dev/null
+++ b/src/main/java/jm/task/core/jdbc/util/Test.txt
@@ -0,0 +1,5 @@
+Privet
+Kak dela
+Ok
+no good
+и снова седая ночь!!!
\ No newline at end of file
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..f3559fbd 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,68 @@
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.cfg.Environment;
+import org.hibernate.service.ServiceRegistry;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.Properties;
+
public class Util {
- // реализуйте настройку соеденения с БД
+ private static final String URL = "jdbc:mysql://localhost:3306/newBD";//хост такой вот ли нет
+ private static final String USERNAME = "root";
+ private static final String PASSWORD = "root";
+ String s = "proba";
+
+ public static Connection util(){
+ Connection connection = null;// реализуйте настройку соеденения с БД
+ try {
+ connection =DriverManager.getConnection(URL,USERNAME,PASSWORD);
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
+ }
+ return connection;
+ }
+
+ private static SessionFactory sessionFactory;
+
+ private Util() {}
+
+ public static SessionFactory getSessionFactory() {
+ if (sessionFactory == null) {
+ try {
+ Configuration configuration = new Configuration();
+
+ Properties settings = new Properties();
+ settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
+ settings.put(Environment.URL, URL);
+ settings.put(Environment.USER, USERNAME);
+ settings.put(Environment.PASS, PASSWORD);
+ 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, "");
+
+ configuration.setProperties(settings);
+ configuration.addAnnotatedClass(User.class);
+
+
+ ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
+ .applySettings(configuration.getProperties()).build();
+
+ sessionFactory = configuration.buildSessionFactory(serviceRegistry);
+
+ } catch (Exception e) {
+ System.out.println("Исключение!" + e);
+ }
+ }
+ return sessionFactory;
+ }
}
diff --git a/src/test/java/UserServiceTest.java b/src/test/java/UserServiceTest.java
index c4b9dd0a..9889c0b4 100644
--- a/src/test/java/UserServiceTest.java
+++ b/src/test/java/UserServiceTest.java
@@ -13,7 +13,6 @@ public class UserServiceTest {
private final String testLastName = "Ivanov";
private final byte testAge = 5;
-
@Test
public void dropUsersTable() {
try {