Spring中的事务

Spring中的事务

1.事务的作用:保证数据一致性,保证一组Dao操作能够一起成功,一起失败。

2.事务应用在哪一层? Service业务层

3.事务控制的方式?

JDBC:Connection.setAutoCommit(false);  //设置手动提交

        Connection.commit(); //提交

        Connection.rollback();//回滚

4.Spring事务管理有两种

1)声明式事务管理(重点)

在配置文件中配置属性声明,基于AOP方式实现事务操作,也是将事务管理作为一个切面,织入到目标方法实现事务的管理

2)编程式事务管理

自己编写管理事务方式,即进行提交和异常回滚等操作,只有少数业务操作时适合

5.声明式事务管理

事务划分为额外功能,对于spring而言,把额外功能添加给核心方法,需要使用AOP中的动态代理。

开发步骤:I.创建原始类

                  II.配置原始类的相关信息

                  III.书写额外功能(事务--spring)

                  IV.配置额外功能类的相关信息

          V.定义切点

          VI.组装切面

6.spring的事务属性

隔离属性、传播、只读、超时、异常属性

  1. )隔离属性 isolation
  2. I脏读:一个事务读取了另一个事务尚未提交的数据

  1. II重复读

  1. III幻影读

默认值:default  使用数据库默认的隔离属性

MySQL数据库:REPEATABLE_READ (行锁)

Oracle数据库:READ_COMITTED(列锁)

安全性:表锁>行锁>列锁

性能:列锁>行锁>表锁、

2)传播属性  propagation

作用:事务嵌套问题

propagation=”REQUIRED”  默认值   当外层有事务则融合到新的事务中,外部没有事务则开启新的事务  (适用于增删改)

propagation=”SUPPORTS”  当外层有事务则融合到新的事务中,外部没有事务则不开启新的事务  (适用于查,提高查询效率)

3)只读属性 readonly

readonly: false默认

          true  (查询时可以提高查询效率)

4)超时属性 timeout

作用:当该数据被占用时,指定等待时长

默认值:-1  根据数据库的超时属性默认值

5) 异常属性  

   rollback-for :可以指定回滚的异常

   no-rollback-for:可以指定提交的异常

           默认会对RunTimeException及其子类进行回滚,会对非RunTimeException进行提交。

        增删改:全用默认值  isolation=”default”

                            propagation=”REQUIRED”

                            readonly=”false”  timeout=”-1”

    查询:propagation=”SUPPORTS”  readonly=”true” 提高查询效率

     

自己创建异常

如果指定回滚:要在配置文件中添加rollback-for:”异常的名称”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值