Spring学习一:事务参数
一.事务参数
在spring里面,声明式事务是用事务参数来定义的。一个事务参数就是事务策略应该如何应用到某个方法的一段描述。一个事务参数由五个方面组成。
- 传播行为。
- 隔离级别。
- 只读。
- 事务超时。
- 回滚规则。
二.传播行为
传播行为定义了关于客户端和被调用方法的事务边界。Spring定义了七种传播行为。只有PROPAGATION_REQUIRED,PROPAGATION_REQUIRED_NEW,PROPAGATION_NESTED才有可能主动开启一个新事务。
- PROPAGATION_MANDATORY:表示该方法必须运行在一个事务中。如果当前没有事务发生,将抛出一个异常。
- PROPAGATION_NEVER:表示该方法不需要运行在事务中。如果当前有事务在运行,将抛出一个异常。
- PROPAGATION_NOT_SUPPORTED:表示该方法不需要运行在事务中。如果当前有事务在运行,该事务会在此方法运行期间挂起。
- PROPAGATION_SUPPORTED:表示该方法不需要运行在事务中。但如果有一个事务在运行,该方法也可以在这个事务里运行。
- PROPAGATION_REQUIRED:表示该方法必须运行在事务中。如果当前有事务在运行,则该方法运行在此事务中,否则开启一个新的事务。
- PROPAGATION_REQUIRED_NEW:表示该方法必须运行在自己的事务中。如果当前有事务在运行,此事务挂起,开启一个新的事务。否则开启一个新的事务。
- PROPAGATION_NESTED:它与PROPAGATION_REQUIRED_NEW的区别是:PROPAGATION_REQUIRED_NEW完全是一个新的事务,单独commit和rollback,不依赖外部事务。而PROPAGATION_NESTED则是外部事务的子事务(称为嵌套事务),当外部事务commit时,嵌套事务才commit,当外部事务rollback时,嵌套事务才rollback。
三.隔离级别
建议先阅读mysql事务隔离级别。隔离级别定义了一个事务可能受其它事务影响的程度。Spring提供了五种事务隔离级别。
- ISOLATION_DEFAULT:使用后端数据库默认隔离级别。
- ISOLATION_READ_UNCOMMITED:对应Read uncommited(读取未提交的内容)。
- ISOLATION_READ_COMMITED:对应Read commited(读取提交内容)。
- ISOLATION_REPEATABLE_READ:对应Repeatable read(可重复读)。
- ISOLATION_SERIALIZABLE:对应Serializable(可串行化)。
四.只读
如果一个事务只对后端数据库执行读操作,那么该数据库可以利用事务的只读特性,采取优化措施。《Spring in action》
写道
由于只读的优化措施是在一个事务启动时由后端数据库实施的,因此,只有对于那些具有可能启动一个新事务的传播行为(PROPAGATION_REQUIRED,PROPAGATION_REQUIREDS_NEW,PROPAGATION_NESTED)的方法来说,将事务声明为只读才有意义。
我就有点不了解了,<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>这样配置的readOnly岂不是没有意义?
五.超时
假定你的事务运行时间特别长,而事务可能涉及到数据库锁定,长时间的运行事务会不必要的占据数据库资源。你可以声明一个事务,在特定的秒数后回滚,而不必等它自己结束。
六.回滚规则
默认设置下,事务只在运行异常是回滚,受检异常不回滚。
相关推荐
DriveCar 2020-09-07
quniMdejiangyou 2020-08-15
qingjiuquan 2020-07-18
zhanbuquan 2020-07-04
liaomingwu 2020-06-25
lpfvip00 2020-06-25
zhanbuquan 2020-06-21
daillo 2020-06-17
sunysh00 2020-06-11
vincen 2020-06-10
langyue 2020-06-09
DriveCar 2020-06-09
airfling 2020-06-08
sofast 2020-06-03
weikaixxxxxx 2020-05-30
neweastsun 2020-05-27
sunysh00 2020-05-25
silencehgt 2020-07-04
variab 2020-06-13
zjx0 2020-05-20
愿天下再无BUG 2020-05-16
pengpengflyjhp 2020-05-14
MissFuTT 2020-05-11
inhumming 2020-05-10
好记忆也需烂 2020-05-10
silencehgt 2020-05-09