Skip to content
Open

Hql #21

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
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<version>8.0.25</version>
</dependency>

<dependency>
Expand All @@ -49,4 +49,4 @@
</dependency>
</dependencies>

</project>
</project>
50 changes: 44 additions & 6 deletions src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -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<User> getAllUsers() {
return null;
Session session = Util.getSessionFactory().openSession();//открыли сессию
Transaction tx1 = session.beginTransaction();//получил транзакцию
Query query = session.createQuery("FROM User");
List<User> 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();
}
}
114 changes: 108 additions & 6 deletions src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java
Original file line number Diff line number Diff line change
@@ -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<User> getAllUsers() {
return null;

List<User> 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();
}
}
}
18 changes: 14 additions & 4 deletions src/main/java/jm/task/core/jdbc/model/User.java
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 +
'}';
}
}
17 changes: 11 additions & 6 deletions src/main/java/jm/task/core/jdbc/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
@@ -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<User> getAllUsers() {
return null;
return userDao.getAllUsers();
}

public void cleanUsersTable() {

userDao.cleanUsersTable();
}
}
5 changes: 5 additions & 0 deletions src/main/java/jm/task/core/jdbc/util/Test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Privet
Kak dela
Ok
no good
и снова седая ночь!!!
65 changes: 64 additions & 1 deletion src/main/java/jm/task/core/jdbc/util/Util.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Loading