事务

做~自己de王妃 提交于 2019-12-04 15:34:08

声明式事务的五大属性

1.传播机制(propagation)

指的是一个带有事务的方法A运行在另一个带有事务的方法B内部时,内层方法A是使用自己的事务还 是使用外层B的事务

required:默认值,表示如果外层方法B有事务,就使用外层方法B的事务,没有就使用自己的事务

requires_new:无论外层方法B有没有事务,内层方法A都使用自己的事务

supports:表示如果外层方法B有事务,就使用外层方法B的事务,如果外层方法B没有事务,就不使用事务

2.隔离级别(isolation):是针对数据库的并发访问的,不同的隔离级别,数据库有着不同的解决方法。

repeatable_read: 默认是 可重复度

read_uncommitted:读未提交

read_committed:读已提交

serializable:串行化读:就是如果设置了这个注解,运行期间就不允许改变值 也就是不允许并发操作。

3.回滚机制  通常只有运行时异常会自动回滚,编译时异常不会回滚,想要让其回滚只有设置rollbackFor

 rollbackFor  ={一个异常类的字节码}  就是在事务后面的参数列表里面加上 一个异常类的字节码,当你下面遇到这样的异常时 会回滚

no rollbackFor 就是即使是运行时异常,后面如果不想让其回滚,就在事务后加上norollbackFor={运行时异常的类字节码} 下面遇见这种类型的异常就不会自动回滚。

SQLException:本属于编译时异常,但是在遇见spring框架的时候底层被SQLErrorCodeSQLEceptionTranslator重写编译编 转化成了运行时异常  在遇见sqlException异常的时候也会自动回滚。

4.超时属性

:::.事务在数据库执行过程中,势必要消耗数据库的资源,如果让一个事务长期执行,就会影响其他事物的执行,所以一旦一个事务在指定的时间内还没有完成操作就让它回滚。

 

5.只读属性

readOnly = true  表示 只允许对数据库进行查询读取操作,不能对数据进行增 删 改 操作。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!