Spring 的事务

目录

事务的基础

1.事务的定义

2.事务的特点

3.事务的问题

4.事务的隔离级别

5.事务的传播行为

6.Spring的事务管理

6.1 编程式事务管理

6.2 声明式事务管理


事务的基础

1.事务的定义

        事务是一组最小的逻辑单元,这组单元里面的操作要么同时成功,要么同时失败。

2.事务的特点

        1.原子性:事务是最小单位不可分割

        2.一致性:要么全部执行成功,要么全部操作失败

        3.隔离性:事务之间互不影响

        4.持久性:事务一旦提交就会持久化到数据库中

3.事务的问题

        1.脏读:一个事务读取了另一个事务没有提交的数据

        2.虚读(幻读):一个受insert影响,读同一张表,多次读取行数不一样

        3.不可重复读:一个受update影响,查同一条数据,多次读取结果不一致

4.事务的隔离级别

        1.read uncomited:未提交读,没有解决任何问题

        2.read commited:已提交读,解决脏读问题

        3.repeatable read:可重复读,解决虚读 幻读问题

        4.serializable:串行化,解决所有问题

5.事务的传播行为

        1.支持当前事务:

                PROPAGATION_REQUIRED:当前有事务就在当前事务处理,当前没有事务就新建事务执行;

                PROPAGATION_SUPPORTS:当前有事务就在当前事务处理,当前没有事务就以非事务形式执行;

                PROPAGATION_MANDATORY:当前有事务就在当前事务处理,当前没有事务就抛异常;

        2.不支持当前事务:

                PROPAGATION_REQUIRES_NEW:当前有事务就挂起,新建事务执行,当前没有事务就新建事务执行;

                PROPAGATION_NOT_SUPPORTED :当前有事务就挂起,以非事务的形式执行;

                PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

        3.嵌套事务:

                PROPAGATION_NESTED:当前存在事务,则在嵌套事务内执行。如果当前没有事务,就新建事务执行。

6.Spring的事务管理

6.1 编程式事务管理

        改变了业务逻辑的结构,也比较复杂。

6.2 声明式事务管理

        1.XML版本

1.加入tx约束
2.配置平台事务管理器
<bean id = "transactionManager" class=""></bean>
3.增加tx标签
<tx:advice id="tx" transaction-manager="指定增强使用哪一个平台事务管理器"> 
    //事务的属性配置	
    <tx:attribute> 
        //在切入点基础上,对不同的方法进行不同事务配置
        <tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED"/>
		<tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED"/>
        <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED"/>		  	                
        <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED"/>
        <tx:method name="remove*" isolation="DEFAULT" propagation="REQUIRED"/>

        <tx:method name="query*" isolation="true" propagation="REQUIRED"/>
        <tx:method name="select*" isolation="true" propagation="REQUIRED"/>
        <tx:method name="transfer*" isolation="DEFAULT" propagation="REQUIRED"/>
    </tx:attribute>
</tx:advice>

        2.注解版

        @Transational(isolation="隔离级别",propegation="传播行为")        

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值