春季框架中的回滚机制



我接受了采访,我被问到一个问题,使我无语。所以我想也许我可以在这里问这个问题,并为此找到正确的答案。问题如下。

在春季,我们将Hibernate用于数据库操作。我有一个 Java类,其中有多个对象需要 坚持在数据库中(假设3个对象)。现在,我想确保是否 第三个对象无法持续,然后是第一个和第二个对象 物体应回滚。这种行为应由 春季框架,问题是如何确保春季 实现行为?

只是为了我的个人理解,即使我想确保在冬眠中实现这种行为,我该如何实现?

在此问题上的任何帮助将不胜感激。谢谢

阅读春季的@Transactional注释,如何与AOP代理一起工作以及如何执行回滚。引用文档:

推荐的指示弹簧框架交易的方法 交易的工作要回滚的基础架构就是 从当前正在执行的代码中提出一个异常 交易的上下文。春季框架的交易 基础架构代码将捕获任何未手动的例外 上调用堆栈,并确定是否标记 回滚的交易。

在默认配置中,弹簧框架的交易 基础架构代码仅标志着情况下的回滚交易 运行时,未选中的例外;也就是说,当投掷例外 是Runtime Exception的实例或子类。(错误也将 - 默认情况下 - 导致回滚)。被抛出的检查例外 通过交易方法不会导致默认值回滚 配置。

参考:

@transactional :http://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-framework-reference/html/html/transaction.html#tx-decl-w.tx-decl-weclain

回滚:http://docs.spring.io/spring-framework/docs/docs/4.2.x/spring-framework-framework-reference/html/html/html/transaction.html#transaction.html#transaction-declaration-declaration-declaration-declaration-rolling-back

最新更新