如何在异常情况下配置休眠模式以回滚关联表中的事务?我有一个Transaction表,并且有一些相关的表需要在其中保留数据,但是如果出现问题,我想回滚所有这些表。
答案 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之类的框架提供了更为复杂的声明式事务管理。