事务的传播属性
传播 | 描述 |
---|---|
REQUIRED | 如果现有的事务正在运行,当前方法在这个事务中运行,否则应该启动新的事务,并且在自己的事务中运行 |
REQUIRE NEW | 当前方法必须启动新事务,并且在自己的事务中运行,如果现有的事务正在运行,那么它应该被挂起。 |
SUPPORT | 当前现有的事务正在运行,当前事务应该运行在这个事务中,否则,它没必要运行在事务中。 |
NOT SUPPORT | 当前方法不应该运行在事务中,如果有事务正在运行,那么它应该挂起 |
MANDATORY | 当前方法必须运行在事务中,如果没有事务在运行中,将抛出一个异常。 |
NEVER | 当前方法不该运行在事务中,如果现在事务正在运行,将抛出异常。 |
NESTED spring特有 | 如果现有事务正在运行,当前事务应该运行在嵌套的事务中,否则,它应该启动一个新的事务并运行在自己的事务中。(该行为对于批处理有用,想象一下,如果你需要提交100w条数据,每隔1000条提交一次,如果出现某种事务,你回滚嵌套的事务,仅仅丢失1000条数据,而不是100w条) |