zoukankan      html  css  js  c++  java
  • spring 事务控制

    spring支持编程式事务和声明式事务:

    编程式事务:是需要在方法中加入Spring的事务API 例如hibernate中的 beginTransaction() commit() rollback。。。。更加具有细粒度,但是同时也增加了代码的倾入性

    声明式事务:在配置文件中配置,无需程序员手动编程控制事务,也就是说数据库的事务的开启,提交都是框架帮助我们做好的,本质上是建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务--是spring所倡导的非侵入式的开发方式。一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。

    两种方式比较:

    和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等

    声明式事务管理的两种方式:

    1.基于tx和aop命名空间的xml配置文件格式

    2.基于@Transaction注解 : @Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性                                            

                  @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private  或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。

                   @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。

    spring+mybatis 多数据库事务管理:一个方法里面能同时对两个数据库的数据进行操作 :https://zhidao.baidu.com/question/1928811909233574387.html

    Spring Boot Druid 多数据源 Atomikos 分布式事务:https://blog.csdn.net/a510835147/article/details/75675311

  • 相关阅读:
    java socket知识点
    java io流缓冲理解
    如何理解java回电话
    它们的定义Adapterg在etView( )正在使用View.setTag()与不同的是不使用。
    打造你自己ajax上传图片
    POJ 1166 The Clocks
    spring-framework-3.2.4.RELEASE 综合hibernate-release-4.3.5.Final一个错误Caused by: java.lang.NoClassDefFound
    [Android]Volley源代码分析(店)应用
    金融脱媒砸进?
    音乐家演奏乐器
  • 原文地址:https://www.cnblogs.com/zf201149/p/9243123.html
Copyright © 2011-2022 走看看