feat(dao): add UserDao with Hibernate CRUD operations

This commit is contained in:
user
2026-09-21 20:32:38 +04:00
parent a86dd59b65
commit 7b7881ba40
@@ -0,0 +1,92 @@
package com.example;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class UserDao {
private final SessionFactory sessionFactory;
public UserDao() {
sessionFactory =
new Configuration().configure().addAnnotatedClass(User.class).buildSessionFactory();
}
public User create(User user) {
Transaction transaction = null;
try (Session session = sessionFactory.openSession()) {
transaction = session.beginTransaction();
session.persist(user);
transaction.commit();
return user;
} catch (HibernateException e) {
handleException(transaction, e);
return null;
}
}
public User findById(Long id) {
try (Session session = sessionFactory.openSession()) {
return session.find(User.class, id);
} catch (HibernateException e) {
handleException(null, e);
return null;
}
}
public User update(User user) {
Transaction transaction = null;
try (Session session = sessionFactory.openSession()) {
transaction = session.beginTransaction();
User updatedUser = session.merge(user);
transaction.commit();
return updatedUser;
} catch (HibernateException e) {
handleException(transaction, e);
return null;
}
}
public void deleteById(Long id) {
Transaction transaction = null;
try (Session session = sessionFactory.openSession()) {
transaction = session.beginTransaction();
User user = session.find(User.class, id);
if (user != null) {
session.remove(user);
}
transaction.commit();
} catch (HibernateException e) {
handleException(transaction, e);
}
}
private void handleException(Transaction transaction, HibernateException e) {
if (transaction != null) {
try {
transaction.rollback();
} catch (HibernateException rollbackException) {
System.err.println("Ошибка при откате транзакции.");
}
}
System.err.println("Ошибка при работе с Hibernate: " + e.getMessage());
throw e;
}
}