zoukankan      html  css  js  c++  java
  • spring声明式的事务管理

    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时,事务才回滚。

  • 相关阅读:
    Python中利用xpath解析HTML
    常见聚类算法——K均值、凝聚层次聚类和DBSCAN比较
    格式化字符串format函数
    编程语言这个垂直方向
    CLR,GC 表示什么意思?
    ASP.Net MVC开发基础学习笔记:一、走向MVC模式
    NPOI 通过excel模板写入数据并导出
    SQL 注意事项
    解决微信公众号OAuth出现40029(invalid code,不合法的oauth_code)的错误
    iis 站点中文乱码 解决方案
  • 原文地址:https://www.cnblogs.com/fishisnow/p/6394299.html
Copyright © 2011-2022 走看看