Spring事务管理

14 篇文章 0 订阅

MySQL事务

请参阅http://blog.csdn.net/keysilence1/article/details/52460851事务篇

Spring事务管理

使用场景

应用于要求数据一致性要求比较高的场合,例如出现异常的情况,不会导致数据不一致,或出现脏数据等。

特点

为多种持久化层API的支持,比如说比较常用的JDBC、Hibernate、JPA、JTA等;

事务管理方式

支持两种:

  • 编程式事务管理;
    • TransactionTemplate,比较常用的方式;
    • PlatformTransactionManager;
  • 声明式事务管理;
    声明式管理建立在AOP之上,本质上就是在方法前后进行拦截,在目标方法开始之前创建或加入一个事务,在目标方法执行完毕后执行提交或者回滚事务的操作。声明式事务管理最大的优点在于减少对业务的侵入性。
  • 注:两者之间比较,编程式事务管理可以作用于某一代码块,而声明式事务只能作用于某一方法上。并且对于后者这种管理方式,默认情况下,只有来自外部的调用才会被AOP截获,类内部方法调用本类其他的方法不会引起事务的行为,即使调用方法使用@Transaction注解进行了修饰。

自动提交

Spring底层已经将连接的自动提交属性设置成了false;

代理方式

配置

<context:property-placeholder order="21" location="classpath*:META-INF/spring/jdbc.properties" file-encoding="UTF-8" ignore-unresolvable="true"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="driverClass" value="${jdbc.driverClassName}"/>
    <property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
    <property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>
    <property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>
    <property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
    <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
    <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
</bean>
<bean id="transactionManager"
 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
<!-- enable autowire -->
<context:annotation-config/>
<!-- 此处使用CGLIB动态代理的方式,默认为JDK动态代理(proxy) -->
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值