gpt4 book ai didi

hibernate - 当发生未处理的异常时,Hibernate 是否会自动回滚编程事务?

转载 作者:行者123 更新时间:2023-12-01 06:48:43 25 4
gpt4 key购买 nike

在 Hibernate 中处理程序化事务时,是否有必要在发生异常时显式调用回滚,或者如果出现未处理的异常,框架是否会负责调用回滚?下面的代码看起来像 保险箱方法(虽然是丑陋的代码)以确保回滚,但我想知道是否有更优雅的编码方式,想法?

ApplicationContext ac = new ClassPathXmlApplicationContext("hibernate-config.xml");
SessionFactory factory = (SessionFactory) ac.getBean("sessionFactory");
Session session = factory.getCurrentSession();

Transaction txn = null;
try
{
txn = session.beginTransaction();

// <insert transaction work here>

txn.commit();
}
catch(Exception e)
{
try {txn.rollback(); }
catch (Exception eAny) { }
throw(e);
}
finally { session.close(); }

最佳答案

如何使用 Declarative Transaction Demarcation ?

默认情况下,所有 RuntimeExceptions 都会导致回滚,但您可以将其调整为在所有异常上回滚。

AFAIK,您必须注意一些问题,例如:您不能使用 @Transactional 注释所有内容,只有 bean 的类或公共(public)方法。

关于hibernate - 当发生未处理的异常时,Hibernate 是否会自动回滚编程事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2119784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com