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;
+ }
// реализуйте настройку соеденения с БД
}