首页 > 编程语言 > 详细

spring声明式的事务管理

时间:2017-02-13 16:34:20      阅读:233      评论:0      收藏:0      [点我收藏+]

spring支持声明式事务管理编程式事务管理两种方式。

编程式事务使用TransactionTemplate来定义,可在代码级别对事务进行定义。

声明式事务基于aop来实现,缺点是其最细粒度的事务声明只能到方法级别。

声明式事务管理有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。

    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 配置基于注解的声明式事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

事务的隔离级别和超时回滚默认基于底层数据库。

2. @Transactional注解可以对事务实现元数据的配置。

public class TransactionalService {
    @Transactional("order")
    public void setSomething(String name) { ... }
    @Transactional("account")
    public void doSomething() { ... }
}

xml中应用的上下文声明:

<tx:annotation-driven/>
    <bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        ...
        <qualifier value="order"/>
    </bean>

    <bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        ...
        <qualifier value="account"/>
    </bean>

 

spring事务的回滚规则:

  默认情况下,spring在当前事务的上下文抛出一个非检查性异常(同时包括error),即运行时异常(RuntimeException)和其子类时,事务才会回滚。也就是说,默认情况下,spring在程序运行时抛出IOException等一些非运行时异常是不会回滚的,只有在由于程序设计漏洞而抛出的RuntimeException(比如NullPointerException)或者error时,事务才回滚。

 

spring声明式的事务管理

原文:http://www.cnblogs.com/fishisnow/p/6394299.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!