休眠中的事务回滚配置

时间:2018-11-26 14:46:03

标签: hibernate

如何在异常情况下配置休眠模式以回滚关联表中的事务?我有一个Transaction表,并且有一些相关的表需要在其中保留数据,但是如果出现问题,我想回滚所有这些表。

1 个答案:

答案 0 :(得分:1)

事务是保证原子性的数据库功能。它总是在数据库级别启动,提交或回滚。

使用休眠模式,您可以启动,提交或回滚事务。 (假设您有一个Hibernate SessionFactory的实例)

    Session session = sessionFactory.getCurrentSession();
    session.getTransaction().begin();
    try {
        // perform some data changes ...
        session.getTransaction().commit(); // will save all changes 
    } catch (Exception e) {
        session.getTransaction().rollback(); // will discard all changes
        throw e;
    } finally {
        session.close();
    }

开始事务后,您可以开始更改不同表中的数据。在事务范围内已进行的所有更改将被提交或回滚。

请注意,当您使用Hibernate启动事务时,它会调用(see JDBC transactions)下的JDBC驱动程序,而驱动程序使用适当的SQL查询来启动事务(请参见PostgreSQL START TRANSACTION)。

您不应在实际项目中手动管理事务。诸如Spring之类的框架提供了更为复杂的声明式事务管理。