From 7b7881ba40f1f13b5ab1a11fe1f7a319e424c9f6 Mon Sep 17 00:00:00 2001 From: user Date: Mon, 21 Sep 2026 20:32:38 +0400 Subject: [PATCH] feat(dao): add UserDao with Hibernate CRUD operations --- .../src/main/java/com/example/UserDao.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 second-part/hw-02/user-service/src/main/java/com/example/UserDao.java diff --git a/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java b/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java new file mode 100644 index 0000000..e0fd7ac --- /dev/null +++ b/second-part/hw-02/user-service/src/main/java/com/example/UserDao.java @@ -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; + } +}