【关于Spring那些事】——Spring声明式事务管理

================================================

1.事务管理级别


Spring的事务隔离级别有四个:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。

  • READ_UNCOMMITTED:允许一个事务读取到另一个事务未提交的数据

  • READ_COMMITTED:一个事务只能读取到已经提交后的数据

  • REPEATABLE_READ:一个事务可以多次从数据库读取某条记录,而且多次读取的那条记录都是一致的,除非事务本身发生改变

  • SERIALIZABLE:不允许读取、修改

2.事务传播机制


spring事务的传播机制有七种:REQUIRED、REQUIRES_NEW、NESTED、SUPPORTS、NOT_SUPPORTED、MANDATORY和NEVER。

  • REQUIRED:如果上层有事务则加入该事务,没有就创建新事务

  • SUPPORTS:如果上层有事务则加入该事务,没有就以非事务方式执行

  • REQUIRES_NEW:如果上层有事务则挂起当前事务,没有就创建新事务

  • NOT_SUPPORTED:如果上层有事务则挂起当前事务,没有就以非事务方式执行

  • NEVER:如果上层有事务则抛出异常,没有就以非事务方式执行

  • MANDATORY:如果上层有事务则加入该事务,没有就抛出异常

  • NESTED:如果上层有事务则嵌套该事务执行,没有就创建新事务

3.声明式事务管理


3.1基于XML方式的配置

3.1.1 将Spring提供的事务管理配置交给Spring容器


<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSource"/>

</bean>



3.1.2 通过Spring jdbc提供的tx标签,声明事务管理策略

  • 头文件中添加tx的约束条件和命名空间

xmlns:tx="http://www.springframework.org/schema/tx"



http://www.springframework.org/schema/tx

https://www.springframework.org/schema/tx/spring-tx.xsd">




<tx:advice id="txAdvice" transaction-manager="transactionManager">

   <tx:attributes>

        <tx:method name="insert*" isolation="REPEATABLE_READ" propagation="REQUIRED"/>

        <tx:method name="select*" isolation="REPEATABLE_READ" propagation="SUPPORTS"/>

    </tx:attributes>

</tx:advice>



3.1.3 将事务管理策略以AOP配置应用于service操作方法


<aop:config>

   <aop:pointcut id="crud" expression="execution(* com.gyh.service.*.*(..))"/>

    <aop:advisor advice-ref="txAdvice" pointcut-ref="crud"/>

</aop:config>



3.2 基于注解方式的配置

3.2.1 配置事务管理类并交给Spring容器


<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSource"/>

</bean>




# 总结

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了

**《Java中高级核心知识全面解析》**

![](https://img-blog.csdnimg.cn/img_convert/978bbb4fecb1e8bf5178bb84528d7a43.webp?x-oss-process=image/format,png)

**小米商场项目实战,别再担心面试没有实战项目:**

![](https://img-blog.csdnimg.cn/img_convert/2040361bb7ac7d4bff6296d9535b1e92.webp?x-oss-process=image/format,png)

8大佬用过的一些学习笔记(pdf)都整理在本文中了

**《Java中高级核心知识全面解析》**

[外链图片转存中...(img-jbQlQMVZ-1718784099538)]

**小米商场项目实战,别再担心面试没有实战项目:**

[外链图片转存中...(img-AFkWHShs-1718784099538)]

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值