Spring事务管理

Posted 相信过程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring事务管理相关的知识,希望对你有一定的参考价值。

Spring事务管理

1.事务的基本概念:

运行期例外unchecked事务回滚 throw new RunTimeException()

 

check例外 事务不回滚  Exception

 

 

改变事务行为:

加上以上注释Checked例外,也会事务回滚

 

加上以上注释unChecked例外,不会进行事务回滚

 

事务的传播行为:

不打开事务:

 

默认事务传播行为

 

 

 

 

 

 

外部事务回滚,则全部回滚;内部事务回滚,不影响外部的事务

 (spring内部完成)

Readonly 只读属性设置,不能更新,提高效率

timeout事务的超时时间,默认30秒

isolation事务隔离级别(由数据库提供,不由spring提供)

sqlServer默认: sqlServer2000(read commited), sqlServer2005(2种: read commited,repeatable Read)

mysql默认:

 

隔离级别越高,并发影响性能越大(从上到下,1,2,3,4)

 

 

可重复读,mysql采用的是快照技术(镜像)

 

2.采用基于xml方式配置事务

 

 

切入点  事务通知

Aop技术拦截一些类及其中的方法

第一个*:返回值的类型表示任意

..表示:包含子包

第二个*:包含所有的类

第三个*:包含所有的方法

(..):方法里面的参数可有可无,及任意类型

 

事务管理器

 

 

3.注解方式配置事务,更加灵活

  1.  <tx:annotation-driven transaction-manager="transactionManager/>  
  2.     <!--这句话的作用是注册事务注解处理器 --> 

 

  1.     <bean id="transactionManager"  
  2.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager ">  
  3.         <property name="dataSource">  
  4.             <ref bean="basicDataSource/>  
  5.         </property>  
  6.     </bean> 

 

  1.     <bean id="basicDataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  2.         <property name="url"  
  3.             value="jdbc:mysql://127.0.0.1:3306/mytestdb?characterEncoding=utf8" />  
  4.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  5.         <property name="username" value="root" />  
  6.         <property name="password" value="123456" />  
  7.         <property name="maxActive" value="100" />  
  8.         <property name="maxIdle" value="30" />  
  9.         <property name="maxWait" value="1000" /> 
  10.         <property name="validationQuery" value="select 1" />  
  11.     </bean> 

 

以上是关于Spring事务管理的主要内容,如果未能解决你的问题,请参考以下文章

Spring框架--Spring事务管理和Spring事务传播行为

Spring框架--Spring事务管理和Spring事务传播行为

Spring本地事务

如何手动开启spring事务

什么叫做spring的声明式事务

spring怎么进行的事务管理,求指导?