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
14 changes: 10 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>7</source>
<target>7</target>
<source>15</source>
<target>15</target>
</configuration>
</plugin>
</plugins>
Expand All @@ -33,7 +33,13 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<version>8.0.26</version>
</dependency>

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.23</version>
</dependency>

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

Expand Down
10 changes: 9 additions & 1 deletion src/main/java/jm/task/core/jdbc/Main.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package jm.task.core.jdbc;

import jm.task.core.jdbc.service.UserService;
import jm.task.core.jdbc.service.UserServiceImpl;
import java.sql.SQLException;

public class Main {
public static void main(String[] args) {
public static void main(String[] args) throws SQLException {
// реализуйте алгоритм здесь
UserService userService = new UserServiceImpl();

// userService.createUsersTable();
userService.dropUsersTable();
}
}
100 changes: 91 additions & 9 deletions src/main/java/jm/task/core/jdbc/dao/UserDaoHibernateImpl.java
Original file line number Diff line number Diff line change
@@ -1,42 +1,124 @@
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 org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import java.util.List;

public class UserDaoHibernateImpl implements UserDao {
public UserDaoHibernateImpl() {

}
private SessionFactory sessionFactory;

public UserDaoHibernateImpl() {
sessionFactory = Util.getSessionFactory();
}

@Override
public void createUsersTable() {

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.createSQLQuery(UserDaoJDBCImpl.CREATE_TABLE).executeUpdate();
transaction.commit();
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}

@Override
public void dropUsersTable() {

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.createSQLQuery(UserDaoJDBCImpl.DROP_TABLE).executeUpdate();
transaction.commit();
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}

@Override
public void saveUser(String name, String lastName, byte age) {

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(new User(name, lastName, age));
transaction.commit();
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}

@Override
public void removeUserById(long id) {

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
User user = session.get(User.class, id);
session.delete(user);
transaction.commit();
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}

@Override
public List<User> getAllUsers() {
return null;
Session session = sessionFactory.openSession();
Transaction transaction = null;
List<User> users;
try {
transaction = session.beginTransaction();
String hql = "FROM User";
users = session.createQuery(hql).list();
return users;
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
throw e;
} finally {
session.close();
}
}

@Override
public void cleanUsersTable() {

Session session = sessionFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
String hql = "DELETE FROM User";
session.createQuery(hql).executeUpdate();
transaction.commit();
} catch (RuntimeException e) {
if (transaction != null) {
transaction.rollback();
}
} finally {
session.close();
}
}
}
86 changes: 79 additions & 7 deletions src/main/java/jm/task/core/jdbc/dao/UserDaoJDBCImpl.java
Original file line number Diff line number Diff line change
@@ -1,35 +1,107 @@
package jm.task.core.jdbc.dao;

import jm.task.core.jdbc.model.User;

import jm.task.core.jdbc.util.Util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDaoJDBCImpl implements UserDao {
public UserDaoJDBCImpl() {

public static final String CREATE_TABLE = "CREATE TABLE users" +
"(" +
"id BIGINT PRIMARY KEY AUTO_INCREMENT, " +
"name VARCHAR(64), " +
"last_name VARCHAR(64), " +
"age TINYINT" +
");";

public static final String DROP_TABLE = "DROP TABLE users;";

private static final String INSERT_INTO = "INSERT users(name, last_name, age) " +
"VALUES (?, ?, ?);";

private static final String REMOVE_BY_ID = "DELETE FROM users " +
"WHERE id = ?;";

private static final String GET_ALL = "SELECT * FROM users";

private static final String CLEAR_TABLE = "DELETE FROM users";

public UserDaoJDBCImpl() {
}

public void createUsersTable() {

try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(CREATE_TABLE)) {
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void dropUsersTable() {
try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(DROP_TABLE)) {
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}

}

public void saveUser(String name, String lastName, byte age) {

try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(INSERT_INTO)) {
preparedStatement.setString(1, name);
preparedStatement.setString(2, lastName);
preparedStatement.setByte(3, age);
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void removeUserById(long id) {

try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(REMOVE_BY_ID)) {
preparedStatement.setLong(1, id);
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}

public List<User> getAllUsers() {
return null;
List<User> users = new ArrayList<>();
try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(GET_ALL)) {
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
users.add(buildUser(resultSet));
}
return users;
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}

public void cleanUsersTable() {
private User buildUser(ResultSet resultSet) throws SQLException {
return new User(resultSet.getString("name"),
resultSet.getString("last_name"),
resultSet.getByte("age"));
}

public void cleanUsersTable() {
try (Connection connection = Util.open();
PreparedStatement preparedStatement = connection.prepareStatement(CLEAR_TABLE)) {
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
25 changes: 17 additions & 8 deletions src/main/java/jm/task/core/jdbc/model/User.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
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
@Column(name = "name")
private String name;

@Column
@Column(name = "last_name")
private String lastName;

@Column
@Column(name = "age")
private Byte age;

public User() {

}

public User(String name, String lastName, Byte age) {
Expand All @@ -28,6 +27,16 @@ public User(String name, String lastName, Byte age) {
this.age = age;
}

@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", lastName='" + lastName + '\'' +
", age=" + age +
'}';
}

public Long getId() {
return id;
}
Expand Down
Loading