Как написать транзакцию, используя Hibernate - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно написать транзакцию. Сотрудник может забронировать отпуск. Но после этого я должен убедиться, что выходной вычтен из его праздничного счета :) Вот почему мне нужна транзакция.

Так что я нашел этот код, чтобы сделать это в спящем режиме 5. Кажется, это самый Обычный подход

Transaction transObj = null;
        Session sessionObj = null;
        SessionFactory sessionFactory;

        try {  
            sessionFactory = new Configuration().configure().buildSessionFactory();
            sessionObj = sessionFactory.openSession();
            transObj = sessionObj.beginTransaction();

        holidayDao.save(holiday);
        user.setVacationDays(user.getVacationDays() - holiday.getNumberOfDays());
        userDao.save(user);

        transObj.commit(); 

        }catch (Exception ex) {  
            ex.printStackTrace();  
            transObj.rollback();  
            }  
            finally {sessionObj.close();}  

Мой проект довольно большой. Мне пока не приходилось использовать файл hibernate.cfg. xml. Для транзакции вдруг мне нужно использовать одну. Поэтому я просто хочу написать hibernate.cfg. xml, что моя транзакция будет работать позже. Так как я должен это сделать. В hibernate нет другого способа заставить транзакции работать, кроме файла hibernate.cfg. xml. Спасибо за вашу помощь.

Итак, у меня уже есть файл database.properties. (Я использую Spring).

Но теперь, чтобы получить работу SessionFactory, я создам файл hibernate.cfg. xml, который в основном имеет те же свойства, которые уже есть в моем файле database.properties.

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    </session-factory>
</hibernate-configuration>
...