diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..13566b81
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000..f9a76287
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 00000000..f2f249fd
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,26 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306/new_base
+ $ProjectFileDir$
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306/new_base
+ $ProjectFileDir$
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306/new_schema111
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
new file mode 100644
index 00000000..fa93ed24
--- /dev/null
+++ b/.idea/dbnavigator.xml
@@ -0,0 +1,465 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..d5cd6143
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 00000000..d934ffd0
--- /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/pom.xml b/pom.xml
index 0605a4c0..5f147085 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,7 @@
mysql
mysql-connector-java
- 5.1.38
+ 8.0.25
@@ -45,7 +45,7 @@
org.hibernate
hibernate-core
- 4.3.10.Final
+ 5.6.1.Final
diff --git a/src/main/java/jm/task/core/jdbc/Main.java b/src/main/java/jm/task/core/jdbc/Main.java
index f6e43b0f..c680745c 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.dao.UserDaoHibernateImpl;
+import jm.task.core.jdbc.dao.UserDaoJDBCImpl;
+
public class Main {
public static void main(String[] args) {
- // реализуйте алгоритм здесь
+ UserDaoHibernateImpl userDaoHibernate = new UserDaoHibernateImpl();
+ userDaoHibernate.createUsersTable();
+ userDaoHibernate.saveUser("Pikachu", "Raychu", (byte)66);
+ userDaoHibernate.saveUser("Pik5achu", "Ray5chu", (byte)6);
+ userDaoHibernate.saveUser("Piktfdtachu", "Ray5chu", (byte)6);
+ userDaoHibernate.saveUser("Pik5chu", "Ray5chu", (byte)6);
+ userDaoHibernate.saveUser("Pik5u", "Ray5chu", (byte)6);
+ userDaoHibernate.saveUser("Pik5achu", "Ry5chu", (byte)6);
+ userDaoHibernate.saveUser("Pik5hu", "Ray5chu", (byte)6);
+ userDaoHibernate.cleanUsersTable();
+// userDaoHibernate.removeUserById(1);
+ userDaoHibernate.getAllUsers();
+
+// UserDaoJDBCImpl userDaoJDBC = new UserDaoJDBCImpl();
+// userDaoJDBC.createUsersTable();
+// userDaoJDBC.cleanUsersTable();
+// userDaoJDBC.saveUser("АЛЁШКА", "Й", (byte) 66);
+// userDaoJDBC.saveUser("АРКАДИЧ", "ПИКАЧУ", (byte) 13);
+// userDaoJDBC.saveUser("АРМАНЫЧ", "DEAD", (byte) 999);
+// userDaoJDBC.getAllUsers();
+//// userDaoJDBC.removeUserById(1);
+//// userDaoJDBC.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..61115971 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,95 @@
package jm.task.core.jdbc.dao;
import jm.task.core.jdbc.model.User;
+import jm.task.core.jdbc.util.Util;
+import org.hibernate.Session;
+import java.util.ArrayList;
import java.util.List;
-public class UserDaoHibernateImpl implements UserDao {
+public class UserDaoHibernateImpl extends Util implements UserDao {
+ UserDao dao = new UserDaoJDBCImpl();
+
public UserDaoHibernateImpl() {
}
-
- @Override
public void createUsersTable() {
-
+ dao.createUsersTable();
}
- @Override
public void dropUsersTable() {
-
+ dao.dropUsersTable();
}
@Override
public void saveUser(String name, String lastName, byte age) {
-
+ Session session = this.getSessionFactory().getCurrentSession();
+ try {
+ session.beginTransaction();
+ session.save(new User(name, lastName, age));
+ session.getTransaction().commit();
+ } catch (Exception e) {
+ if (session != null) {
+ session.getTransaction().rollback();
+ }
+ e.printStackTrace();
+ } finally {
+ session.close();
+ }
}
@Override
public void removeUserById(long id) {
-
+ Session session = this.getSessionFactory().getCurrentSession();
+ try {
+ session.beginTransaction();
+ session.delete(session.get(User.class, id));
+ session.getTransaction().commit();
+ } catch (Exception e) {
+ if (session != null) {
+ session.getTransaction().rollback();
+ }
+ e.printStackTrace();
+ } finally {
+ session.close();
+ }
}
@Override
public List getAllUsers() {
- return null;
+ List list = new ArrayList<>();
+ Session session = this.getSessionFactory().getCurrentSession();
+ try {
+ session.beginTransaction();
+ list = session.createQuery("from User").getResultList();
+ session.getTransaction().commit();
+ System.out.println(list);
+ } catch (Exception e) {
+ if (session != null) {
+ session.getTransaction().rollback();
+ }
+ e.printStackTrace();
+ } finally {
+ session.close();
+ }
+ return list;
}
@Override
public void cleanUsersTable() {
-
+ Session session = this.getSessionFactory().getCurrentSession();
+ try {
+ session.beginTransaction();
+ session.createQuery("delete User").executeUpdate();
+ session.getTransaction().commit();
+ } catch (Exception e) {
+ if (session != null) {
+ session.getTransaction().rollback();
+ }
+ e.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..17e362b0 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,110 @@
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 class UserDaoJDBCImpl extends Util implements UserDao {
public UserDaoJDBCImpl() {
-
}
public void createUsersTable() {
-
+ Statement statement;
+ String sql = "create table if not exists zergy\n" +
+ "(\n" +
+ "\tid int auto_increment,\n" +
+ "\tname varchar(33) null,\n" +
+ "\tlastName varchar(33) null,\n" +
+ "\tage int null,\n" +
+ "\tconstraint zergy_pk\n" +
+ "\t\tprimary key (id)\n" +
+ ");";
+ try {
+ statement = getConnect().createStatement();
+ statement.execute(sql);
+ System.out.println("Улей зародился, вызываем морпехов");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
public void dropUsersTable() {
-
+ Statement statement;
+ String delete = "drop table if exists zergy";
+ try {
+ statement = getConnect().createStatement();
+ statement.execute(delete);
+ System.err.println("Проведена орбитальная бомбардировка, Улей уничтожен");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
public void saveUser(String name, String lastName, byte age) {
+ PreparedStatement preparedStatement;
+ String newUser = "insert into zergy (name, lastName, age) values (?, ?, ?)";
+ try {
+ preparedStatement = getConnect().prepareStatement(newUser);
+ preparedStatement.setString(1, name);
+ preparedStatement.setString(2, lastName);
+ preparedStatement.setByte(3, age);
+ preparedStatement.execute();
+ System.out.println("Морпех " + name + " прибыл");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
public void removeUserById(long id) {
+ PreparedStatement preparedStatement;
+ String remove = "delete from zergy where id = ?";
+ try {
+ preparedStatement = getConnect().prepareStatement(remove);
+ preparedStatement.setLong(1, id);
+ preparedStatement.execute();
+ System.err.println("Морпеха под номером " + id + " сожрали Zergy");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
public List getAllUsers() {
- return null;
+ List list = new ArrayList<>();
+ Statement statement;
+ try {
+ statement = getConnect().createStatement();
+ ResultSet resultSet = statement
+ .executeQuery("select name, lastName, age from zergy");
+ while (resultSet.next()) {
+ String name = resultSet.getString(1);
+ String lastName = resultSet.getString(2);
+ Byte age = resultSet.getByte(3);
+ list.add(new User(name, lastName, age));
+ }
+ System.out.println(list);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return list;
}
+
+
public void cleanUsersTable() {
+ Statement statement;
+ String clean = "truncate table zergy";
+ try {
+ statement = getConnect().createStatement();
+ statement.execute(clean);
+ System.err.println("Zergy очищенны огнём");
+ } 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..a37a6b6e 100644
--- a/src/main/java/jm/task/core/jdbc/model/User.java
+++ b/src/main/java/jm/task/core/jdbc/model/User.java
@@ -1,27 +1,34 @@
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 = "zergy")
public class User {
@Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
- @Column
private String name;
- @Column
private String lastName;
- @Column
private Byte age;
public User() {
}
+ @Override
+ public String toString() {
+ return "User{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", lastName='" + lastName + '\'' +
+ ", age=" + age +
+ '}';
+ }
+
public User(String name, String lastName, Byte age) {
this.name = name;
this.lastName = lastName;
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..91f5e7be 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,34 @@
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.model.User;
import java.util.List;
public class UserServiceImpl implements UserService {
+ UserDao dao = new UserDaoHibernateImpl();
public void createUsersTable() {
-
+ dao.createUsersTable();
}
public void dropUsersTable() {
-
+ dao.dropUsersTable();
}
public void saveUser(String name, String lastName, byte age) {
-
+ dao.saveUser(name, lastName, age);
}
public void removeUserById(long id) {
-
+ dao.removeUserById(id);
}
public List getAllUsers() {
- return null;
+ return dao.getAllUsers();
}
public void cleanUsersTable() {
-
+ dao.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..7410959b 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,50 @@
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;
+import java.util.Properties;
+
public class Util {
- // реализуйте настройку соеденения с БД
+ private final static String URL = "jdbc:mysql://localhost:3306/new_base";
+ private final static String USER = "root";
+ private final static String PASSWORD = "springcourse";
+ private SessionFactory sessionFactory;
+
+ public SessionFactory getSessionFactory() {
+ if(sessionFactory == null) {
+ Configuration config = new Configuration();
+ Properties proper = new Properties();
+ proper.put("hibernate.connection.driver_class", "com.mysql.cj.jdbc.Driver");
+ proper.put("hibernate.connection.url", URL);
+ proper.put("hibernate.connection.username", USER);
+ proper.put("hibernate.connection.password", PASSWORD);
+ proper.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
+ proper.put("hibernate.current_session_context_class", "thread");
+ proper.put("hibernate.show_sql", "true");
+ proper.put("hibernate.hbm2ddl.auto", "update");
+ config.setProperties(proper);
+ config.addAnnotatedClass(User.class);
+ ServiceRegistry service =
+ new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
+ sessionFactory = config.buildSessionFactory(service);
+ }
+ return sessionFactory;
+ }
+
+ public Connection getConnect() {
+ Connection connect = null;
+ try {
+ connect = DriverManager.getConnection(URL, USER, PASSWORD);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return connect;
+ }
}
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..80197c1b
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..07e6c858
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..89dc8a29
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..46e52028
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..fa827848
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..35a8eef0
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..9d4abf60
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..6dc74424
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..f54ca664
Binary files /dev/null and b/target/test-classes/UserServiceTest.class differ