繁体   English   中英

使用 Spring @Transactional 注释

[英]Using Spring @Transactional annotation

我有几个操作(服务调用,但我想这并不重要)我需要以原子方式运行。 假设我有多次读写数据库的操作 A、B 和 C,我需要:

  • B 查看 A 所做的 DB 更改(以及 C 查看 A 和 B 所做的更改)。 这很重要,因为某些操作使用先前操作的结果。
  • 在所有三个操作都完成并且事务作为一个整体提交(或者如果出现问题时回滚)之前,其他所有人(比如其他一些事务)都看不到更改(例如,如果他们读取 DB)。 这很重要,因为在这些操作全部完成之前,有问题的数据库表是不一致的。

我在想@Transactional(如下面的示例)正是我在这里需要的(使用正确配置的隔离等),但我不确定。 我可以使用@Transactional 来解决这个问题吗? 如果是,如何正确配置? 谢谢。

@Transactional(...)
public void someTransactionalMethod(...) {
  callA();
  callB();
  callC();
}

PS:您可能会建议我尝试设计一些不同的东西(更好),但恐怕这超出了 realm 的可能性。 我受现有代码等的约束(例如,大多数这些操作的内部运作不在我的控制之下)。

显然@Transactional 正是我在这里需要的。 谢谢@酷

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM