`

Spring中的事务

 
阅读更多

 

更简单的方式是使用@Transactional
1:在配置文件中开启对@Transactional的支持
<tx:annotation-driven transaction-manager="txManager"/>
2:在类或者方法上配置@Transactional
3:@Transactional后面可以跟属性配置,如下:
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
默认的@Transactional配置如下:
1:事务传播设置是 PROPAGATION_REQUIRED
2:事务隔离级别是 ISOLATION_DEFAULT
3:事务是 读/写
4:事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
5:任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚
 
Spring提供两种方式的编程式事务管理:
1:使用 TransactionTemplate
2:直接使用一个 PlatformTransactionManager 实现
如果你选择编程式事务管理,Spring小组推荐你采用第一种方法(即使用 TransactionTemplate)。第二种方法类似使用JTA的 UserTransaction API (除了异常处理简单点儿)。
 
使用 TransactionTemplate:TransactionTemplate 采用与Spring中别的摸板同样的方法,使用回调机制,将应用代码从样板式的资源获取和释放代码中解放出来,不再有大量的try/catch/finally/try/catch代码块。同样,和别的模板类一样,TransactionTemplate 类的实例是线程安全的。
使用TransactionTemplate示例如下:
直接使用TransactionTemplate
使用 PlatformTransactionManager
你也可以直接使用PlatformTransactionManager的实现来管理事务。只需通过bean引用简单地传入一个 PlatformTransactionManager 实现,然后使用 TransactionDefinition 和 TransactionStatus 对象,你就可以启动一个事务,提交或回滚。
 
使用 PlatformTransactionManager示例如下:
直接使用统一的PlatformTransactionManager

java代码:
  1. //获取事务管理器  
  2. PlatformTransactionManager txManager = (PlatformTransactionManager)              
  3.      ctx.getBean("txManager");  
  4. //定义事务属性  
  5. DefaultTransactionDefinition td = new DefaultTransactionDefinition();  
  6. td.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);  
  7. //开启事务,得到事务状态  
  8. TransactionStatus status = txManager.getTransaction(td);  
  9. try {  
  10.     //执行数据库操作  
  11. new JdbcTemplate(ds).execute("insert into tbl_user (uuid,name) values('"+um1.getUuid()+"','"+um1.getName()+"')");  
  12.     //提交事务  
  13.     txManager.commit(status);  
  14. }catch (Exception e) {  
  15.     //回滚事务  
  16.     txManager.rollback(status);  
  17. }  
4
5
分享到:
评论

相关推荐

    Spring中事务的传播属性详解

    这意味着`methodB`内部的操作将在自己的事务中完成,不受`methodA`事务的影响。如果`methodB`的事务提交成功,但`methodA`的事务回滚,`methodB`的结果不会受到影响。 5. **PROPAGATION_NOT_SUPPORTED** `methodB...

    深入理解spring的事务管理机制

    Spring事务管理的核心是基于AOP(面向切面编程)来实现的。 **Spring事务的本质**实际上是依赖于底层数据库提供的事务支持。如果没有数据库层面的支持,Spring无法单独实现事务的功能。在传统的JDBC操作中,如果想...

    spring事务配置的五种方式

    ### Spring事务配置的五种方式详解 #### 一、引言 在企业级应用开发中,事务处理是非常重要的一部分,特别是在涉及多个数据库操作时。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务处理方式。...

    Spring中事务

    - **原子性(Atomicity)**:事务中的所有操作被视为一个单元,这些操作要么全部成功,要么全部失败,不会留下部分执行的状态。 - **一致性(Consistency)**:事务完成后,系统状态必须保持一致,不会因事务执行...

    Spring中事务传播行为的介绍

    1. PROPAGATION_MANDATORY:强制事务,表示该方法必须运行在一个事务中,如果当前没有事务正在发生,则抛出异常。这意味着该方法必须在一个事务上下文中运行,否则将抛出异常。 2. PROPAGATION_NESTED:嵌套事务,...

    Spring中事务用法示例及实现原理详解

    原子性是指事务中的所有操作要么全部执行,要么全部不执行;一致性是指事务前的数据状态和事务后的数据状态是一致的;隔离性是指事务之间的独立性,一个事务的执行不会影响其他事务的执行;持久性是指事务执行的结果...

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    实验 spring 声明事务

    接着,使用`&lt;tx:advice&gt;`和`&lt;tx:attributes&gt;`定义事务策略,例如,将所有以`insert*`、`update*`和`delete*`开头的方法设置为`REQUIRED`传播属性,意味着这些方法必须在事务中执行。最后,使用`&lt;aop:config&gt;`配置...

    spring事务与数据库操作

    ### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...

    spring学习事务源码

    此外,Spring的事务传播行为(PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等)是另一个重要概念,它定义了在一个事务中的方法如何启动新的事务或者加入到当前事务中。例如,PROPAGATION_REQUIRED表示如果当前...

    Spring Hibernate事务实例

    在上面的例子中,`saveUser`方法会在一个事务中执行,如果发生异常,整个事务会被回滚,确保数据的一致性。 总结一下,`Spring Hibernate事务实例`涵盖了以下核心知识点: 1. Spring框架的声明式事务管理:通过`...

    spring声明事务的配置

    - `PROPAGATION_NEVER`:不允许在事务中运行,如果已经在一个事务中,将抛出异常。 - `PROPAGATION_REQUIRES_NEW`:总是新建一个事务,如果存在事务,暂停当前事务。 - `PROPAGATION_SUPPORTS`:如果当前存在事务...

    spring事务操作试验

    在Spring事务中,有几种常见的隔离级别可供选择,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每种隔离级别都有其特定的并发控制策略,...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。

    Spring分布式事务实现

    其中,Spring的分布式事务管理是其核心特性之一,它允许开发者在分布式系统环境中处理复杂的事务逻辑。本篇将深入探讨Spring如何实现分布式事务,以及涉及到的相关技术。 首先,分布式事务是指在多个数据库或者服务...

    Spring2.0 事务处理

    这段代码表明`saveUser`方法将在一个事务中执行,如果发生异常,事务将被回滚。 总的来说,Spring 2.0的事务处理机制是其核心功能之一,它通过声明式和编程式的事务管理方式为开发者提供了极大的便利。理解并熟练...

    Spring事务流程图

    Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在Spring中,事务管理分为编程式和声明式两种方式。本篇文章将详细解释Spring事务管理的流程,以及如何通过时序图来理解这一...

    Spring的事务管理小案例

    原子性确保事务中的所有操作要么全部成功,要么全部失败;一致性确保事务执行前后,数据的状态符合业务规则;隔离性防止多个事务并发执行时的数据交错;持久性则保证一旦事务提交,其结果将永久保存。 Spring的事务...

Global site tag (gtag.js) - Google Analytics