4.9.10声明式事务和可编程事务混合使用
通过使用声明式的事务,开发人员无需在代码中再嵌入事务管理的代码。如果用户即声明了事务,又在代码中嵌入了事务管理代码,那么事务管理框架根据事务类型进行相应的处理,具体的处理方法见下表:
|
方法实现中开启事务类型 |
|||
方法声明事 务类型 |
NEW_TRANSACTION |
REQUIRED_TRANSACTION |
MAYBE_TRANSACTION |
NO_TRANSACTION |
NEW_TRANSACTION |
屏蔽声明的事务,程序中开启一个新事务 |
使用声明的事务 |
使用声明的事务 |
屏蔽声明 的事务, 程序在 没有事 务的环 境下运行 |
REQUIRED_TRANSACTION |
屏蔽声明的事务,程序中开启一个新事务 |
使用声明的事务 |
使用声明的事务 |
屏蔽声明 的事务, 程序在 没有事务 的环境下运行 |
MAYBE_TRANSACTION |
如果声明的事务存在,屏蔽声明的事务,程序中开启一个新事务 |
如果声明的事务存在,则使用声明的事务,否则开启一个新的事务 |
如果声明的事务存在,则使用声明的事务,否则不需声明事务 |
如果声明的 事务存在, 屏蔽声明的 事务,程序在 没有事务的 环境下运行 |
NO_TRANSACTION |
程序中开启一个新事务 |
程序中开启一个新事务 |
程序在没有事务的环境下运行 |
程序在没有 事务的环境 下运行 |
作为使用事务的一个原则,系统中不应该出现同一个方法中既使用声明式事务又在代码中编写事务管理代码的情况,这样会导致达不到预期的事务管理的效果。