使用 Spring @Transactional 注解
Using Spring @Transactional annotation
我有几个操作(服务调用,但我想这并不重要)我需要自动 运行。假设我有多次读写数据库的操作 A、B 和 C,我需要:
- B 查看 A 所做的数据库更改(以及 C 查看 A 和 B 所做的操作)。这很重要,因为一些操作使用以前操作的结果。
- 在所有三个操作完成并且事务作为一个整体提交(或者如果出现问题时回滚)之前,其他所有人(比如其他一些事务)都不会看到更改(例如,如果他们读取数据库)。这很重要,因为在这些操作全部完成之前,有问题的数据库表是不一致的。
我在想@Transactional(如下例所示)正是我在这里需要的(正确配置隔离等),但我不确定。我可以使用@Transactional 来解决这个问题吗?如果是,如何正确配置?谢谢。
@Transactional(...)
public void someTransactionalMethod(...) {
callA();
callB();
callC();
}
P.S.: 你可能会建议我尝试设计一些不同的东西(更好),但恐怕这超出了可能性范围。我受现有代码等的约束(例如,大多数这些操作的内部工作不受我控制)。
显然@Transactional 正是我在这里需要的。谢谢@cool
我有几个操作(服务调用,但我想这并不重要)我需要自动 运行。假设我有多次读写数据库的操作 A、B 和 C,我需要:
- B 查看 A 所做的数据库更改(以及 C 查看 A 和 B 所做的操作)。这很重要,因为一些操作使用以前操作的结果。
- 在所有三个操作完成并且事务作为一个整体提交(或者如果出现问题时回滚)之前,其他所有人(比如其他一些事务)都不会看到更改(例如,如果他们读取数据库)。这很重要,因为在这些操作全部完成之前,有问题的数据库表是不一致的。
我在想@Transactional(如下例所示)正是我在这里需要的(正确配置隔离等),但我不确定。我可以使用@Transactional 来解决这个问题吗?如果是,如何正确配置?谢谢。
@Transactional(...)
public void someTransactionalMethod(...) {
callA();
callB();
callC();
}
P.S.: 你可能会建议我尝试设计一些不同的东西(更好),但恐怕这超出了可能性范围。我受现有代码等的约束(例如,大多数这些操作的内部工作不受我控制)。
显然@Transactional 正是我在这里需要的。谢谢@cool