Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 26 additions & 14 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,40 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version>
<configuration>
<inputEncoding>UTF-8</inputEncoding>
<outputEncoding>UTF-8</outputEncoding>
<generateReports>false</generateReports>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
</build>

<dependencies>
<!-- Ваши зависимости-->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<version>8.0.25</version>
</dependency>

<dependency>
Expand All @@ -45,8 +58,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
<version>5.5.2.Final</version>
</dependency>
</dependencies>

</dependencies>
</project>
6 changes: 6 additions & 0 deletions src/main/Resources/mysql_config
Original file line number Diff line number Diff line change
@@ -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
82 changes: 80 additions & 2 deletions src/main/java/jm/task/core/jdbc/Main.java
Original file line number Diff line number Diff line change
@@ -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<User> 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);
}
}
}
24 changes: 24 additions & 0 deletions src/main/java/jm/task/core/jdbc/SqlQuery.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
13 changes: 8 additions & 5 deletions src/main/java/jm/task/core/jdbc/dao/UserDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<User> getAllUsers();

void cleanUsersTable();
void cleanUsersTable() throws SQLException;
}
132 changes: 125 additions & 7 deletions src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
Original file line number Diff line number Diff line change
@@ -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<User> getAllUsers() {
return null;
List<User> 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();
}

}
}
Loading