栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring的事务管理及应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring的事务管理及应用

事务是用来做什么的?

主要是对数据库进行事务管理,spring的事务主要是用来管理spring所加载的ORM(Hibernate、Mybatis、MybatisPlus……)框架。

1、@Transactional(这里是对事务的一些描述属性)标识
2、spring在启动的时候会去解析生成bean,这个过程中会检测拥有相关注解的类和方法。同时给带有此事务的类或者方法生成相应的代理。

关于@Transactional的注解属性都有哪些:

value: 可选的限定描述符,制定使用的事务管理器;
Propagtion:可选的事务传播行为设置;
isolation:可选的事务隔离级别设置;
readOnly:读写或只读事务;
timeout:事务超时时间设置; ms
rollbackFor :导致事务回滚的异常类名字数组
oRollbackFor:不会导致事务回滚
noRollbackForClassName:不会导致事务回滚的异常类名字数组。

Propagtion:各属性值的含义:
propagtion = REQUIRED 如果有事务,那么假如事务,没有的话新创建一个事务
propagtion = NOT_SUPPORTED:这个方法不开启事务;
propagtion = REQUIREDDS_NEW:不管是有有事务的存在,都创建一个新的事务来执行,原来的事务挂起,
propagtion = MANDATORY:必须在一个已有事务中执行;
propagtion = NEVER:不能在一个事务中执行,就是当前必须没有事务,否者抛出异常;
propagtion = SUPPORTS:当前存在事务,则在事务中运行,否者以非事务形态进行运行;
propagtion = NESTED:若有当前存在事务,则在运行一个嵌套的事务,如果当前没有事务,则按照REQUIRED 的方式来运行;

Isolation:各属性值的含义:
TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。
TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但没有提交的数据,该级别不能防止脏读数据,不可重复读和幻读,因此很少使用该隔离级别,
TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据,该级别可以防止脏读 ,这也是大多数情况下的推荐属性。(经常使用到的属性)
TransactionDefinition.ISOLATION_REPEATABLE_READ:该事物隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同,该级别可以防止脏读 和不可重复读。
TransactionDefinition.ISLATION_SERIAIIABLE:所有的事务一次逐个执行,这样事务之间就完全不可能进行干扰,也就是说,该级别可以防止脏读 不可重复读及幻读 但是这将影响到程序的运行性能,通常情况下也会用到该级别。

名词解释:

脏读:当事务读取还未被提交的数据时,就会发生这种事件。
徐同学在北京,修改了一条数据,(未提交), 旭同学长春查到了;
幻读:就是读取到了历史数据,即使此数据已经被修改了,那么也会读到被修改前的这条数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号