Spring的事务管理入门:事务的属性
事务参数,也就是事务属性,也就是事务的特有性质。
?
事务的参数定义是在接口 TransactionDefinition 中定义的。
?
首先是隔离级别(isolation),隔离级别,也就是一个事务与其他并发事务之间的数据共享程度的级别。
?
TransactionDefinition有如下五个定义:
//顾名思义,强制的,也就是说,当前方法必须在事务中,如果不在事务中,就会抛出异常PROPAGATION_MANDATORY //支持嵌套事务,也就是事务中再加一个事务。PROPAGATION_NESTED //从不事务,如果在事务中运行,就会抛出异常PROPAGATION_NEVER //不支持异常,如果在事务中运行,那么会被挂起PROPAGATION_NOT_SUPPORTED //要求事务,必须在事务中运行,如果没有事务,就新建一个事务PROPAGATION_REQUIRED //要求新事物,不管什么情况,都新建一个事务PROPAGATION_REQUIRES_NEW //支持事务,有事务就用,没有事务就不用。不会自己去新建事务PROPAGATION_SUPPORTS
?
此外,TransactionDefinition还有一个字段:TIMEOUT_DEFAULT
这个就是控制事务的超时时间,规定事务必须在多长时间内完成。
?
还有一个 readyOnly选项,TransactionDefinition定义了一个方法:isReadyOnly。据说如果是 radyonly,事务就会进行一定的优化,使得事务是只读的。
?
?
?
?
?
?
?
?
?