spring 控制事务

<!-- 对数据源进行事务管理 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

p:dataSource-ref="dataSource"/>

<aop:config>

<aop:pointcut id="transactionPointcut" expression="execution(* cn.springmvc.service.*.*(..))"/>

<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>

</aop:config>

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="get*" read-only="false" propagation="REQUIRED"/>

<tx:method name="*" propagation="REQUIRED" read-only="false"  />

</tx:attributes>

</tx:advice>

  1. /**
  2. * 说下事务的传播属性
  3. * REQUIRED (默认)    业务方法需要在事务中运行,如果方法运行的时候已经开启事务,就加入事务,否则创建新的事务
  4. * NOT_SUPPORTED    声明方法不需要开启事务.如果已经开启事务后调用该方法.则先挂起该事务,方法执行完毕后,事务恢复
  5. * REQUIRES_NEW     不管是否存在事务,都另行开启新的事务.如果先前已经开启事务,挂起原先事务.创建新的事务.
  6. *                  新的事务执行结束后,恢复原先事务
  7. * MANDATORY    只能在已经存在的事务中执行,不能自行创建事务,如果在没有开启事务的环境下调用,容器抛出例外
  8. * SUPPORTS     墙头草,有事务就在事务中执行.没事务就在没事务的环境下执行
  9. * NEVER    绝对不能在事务中执行.如果执行.抛出例外
  10. * NESTED   如果有事务存在,开启一个新事务嵌套在上层事务中.开启的新事务具有自己独立的回滚点.新事务的回滚不会对外部事务造成影响,
  11. *          但是外部事务的提交会直接提交嵌套事务
  12. *          如果没有事务存在,则按照REQUIRED属性执行,该属性只对DataSourceTransationManager事务管理器有效
  13. */
时间: 2025-01-05 03:31:12

spring 控制事务的相关文章

spring的事务控制

1.事务介绍 (1)特性:ACID Atomicity(原子性):事务中的所有操作要么全做要么全不做 Consistency(一致性):事务执行的结果使得数据库从一个一致性状态转移到另一个一致性状态 Isolation(隔离性):一个事务的执行不受其他事务的干扰 Durability(永久性):一个事务一旦提交,对数据库的影响是永久性的 (2)事务并发问题 (3)       隔离级别 2.  Spring封装了事务管理操作 1.事务操作 打开事务  回滚事务   提交事务 2.事务操作对象 因

面试之spring是如何控制事务

1.spring的核心是ioc和aop,其中ioc是将控制权交由spring容器进行管理,aop是面向切面编程,内部实现使用的是动态代理,二动态代理内部实现用的是反射.spring的事务是通过aop来实现的,从cglib.jar包就可以看出,是和动态代理相关的. 2.spring的事务的使用:声明式和编程式(可以介绍一下自己喜欢的使用方式). 3.再简单介绍下spring的事务隔离和传播性.(事务最重要的两个特性,是事务的传播级别和数据隔离级别.传播级别定义的是事务的控制范围,事务隔离级别定义的

阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API

分析aop的 xml 的代码.更直观一些 事务提交和回滚就是我们重复的代码 spring业余事务管理器,我们拿过来直接用就可以 提交和回滚的后面直接调用释放.所以释放资源之类就是多余的 在绑定连接到线程的时候,直接就设置成false,所以开启事务这个通知 也是多余的 spring中的事务 需要先导入包pom.xml 用刚上线类.DataSourceTransactionManager 如果用到Hibernate的话.这个是真正带着代码的实现类 TransactionDefinition 事务的隔

阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制

新建项目 把之前项目src下的内容全部复制过来 pom.xml内复制过来 开始配置 新建一个config的包,然后再新建配置文件类SpringConfiguration @Configuration这个注解是可写可不写的. 这个类会做为字节码的参数传给ApplicationContext @ComponentScan配置要扫描的包 @Import 但是这个Import要导谁呢? 新建JdbcConfig类 这一就可以通过Import导入JdbcConfig这个类 xml里面扫描包的配置可以省略掉

阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解

编程式的事物控制,使用的情况非常少,主要作为了解 新建项目 首先导入包坐标 复制代码 这里默认值配置了Service.dao和连接池其他的内容都没有配置 也就说现在是没有事物支持的.运行测试文件 有错误,但是金额还是被减去了 编码的方式加事务控制 事务控制都离不开提交和回滚这两个操作.在spring里面它吧提交和回滚的方法提交到事务管理器里面了. 于是我们无论如何都需要在bean.xml里面配置事务管理器 接下来要进行事务控制,那肯定需要提交和回滚的操作 spring提交了一个对象,叫做事务模板

spring如何控制事务

Spring 的事务,可以说是 Spring AOP 的一种实现. AOP面向切面编程,即在不修改源代码的情况下,对原有功能进行扩展,通过代理类来对具体类进行操作. spring是一个容器,通过spring这个容器来对对象进行管理,根据配置文件来实现spring对对象的管理. spring的事务声明有两种方式,编程式和声明式.spring主要是通过"声明式事务"的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序,最大的好处是大大减少了代码量.

Spring的事务机制

JAVA EE传统事务机制 通常有两种事务策略:全局事务和局部事务.全局事务可以跨多个事务性资源(即数据源,典型的是数据库和消息队列),通常都需要J2EE应用服务器的管理,其底层需要服务器的JTA支持.而局部事务则与底层采用的持久化技术有关,如果底层直接使用JDBC,需要用Connection对象来操事务.如果采用Hibernate持久化技术,则需要使用session对象来操作事务. 通常的,使用JTA事务,JDBC事务及Hibernate事务的编程流程大致如下, 上图也可以看出,采用传统事务编

JDBC、JTA、Spring的事务管理

Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作.       这样可以防止出现脏数据,防止数据库数据出现问题.开发中为了避免这种情况一般都会进行事务管理. JDBC中是通过Connection对象进行事务管理的Hibernate中是通过Transaction进行事务管理,处理方法与JDBC

Spring中事务管理

1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事务具有四大特性ACID 1)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不被执行.如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生转换:如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换. 2)一致性(Consistency):事务的执行使得数据库从一种正确状态转换成另一种正确状态.例如对于银行转账事务,不管事务