`

spring事务配置--@Transaction

阅读更多

@Transactional(noRollbackFor=RuntimeException.class)方法事务说明
@Transactional(RollbackFor=Exception.class)
@Transactional(readOnly=true)
@Transactional(timeout=100)
@Transactional(isolation)数据库的隔离级别
{
   Read Uncommited:读取未提交的数据(会出现脏读 不可重复读 幻读)
   Read Commited:读已提交的数据(会出现不可重复读和幻读)
   Repeatable Read:可重复读(会出现幻读)
   Serializable:串行化
}

脏读:一个事务读取到另外一个事务未提交的更新的数据
不可重复读:在同一事务中,多次读取同一个数据返回结果有所不同,就是后续的读取可以读到另外一个事务的已经的已经提交的更新数据
可重复读:在同一个事务多次读取数据时,能够保证所读取的数据一样,也就是后读取的不能读到另外一个事务已经提交的数据
幻读:一个事务读取到另外一个事务已经提交的更新的数据

针对查询方法
@Transactional(propagation=Propagation.NOT_SUPPORTED)针对某个方法不开启事务
@Transactional(propagation=Propagation.REQUIRED)默认的事务支持

例子:
public class Bean1 {
  @Transactional(propagation=Propagation.Required)
  public void update() {
     executeUpdate(SQL);
  }
}
public class Bean2 {
  @Transactional(propagation=Propagation.SUPPORTS)
  public void update() {
     executeUpdate(SQL);
  }
}

public class Transaction {
  @Transactional(propagation=Propagation.REQUIRES_NEW)
  public void test1()
  {
     bean1.update();
     bean2.update();
  }
   @Transactional(propagation=Propagation.NOT_SUPPORTED)
  public void test2()
  {
     bean1.update();
     bean2.update();
   }
   @Transactional(propagation=Propagation.SUPPORTS)
   public void test3()
   {
      bean1.update();
      bean2.update();
    }
}

//事务传播属性
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务
@Transactional(propagation=Propagation.REQUIREDS_NEW)//不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY)//必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER)//不能在一个事务中执行,就是当前必须没有事务,否则抛出异常
@Transactional(propagation=Propagation.SUPPORTS)//其他bean调用这个方法,如果在其他bean中声明了事务,就是用事务。没有声明,就不用事务。
@Transactional(propagation=Propagation.NESTED)//如果一个活动的事务存在,则运行在一个嵌套的事务中,如果没有活动的事务,则按照REQUIRED属性执行,它使用一个单独的事务。这个书屋拥有多个回滚的保存点,内部事务的回滚不会对外部事务造成影响,它只对DataSource TransactionManager事务管理器起效。
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)//只读,不能更新,删除
@Transactional(propagation=Propagation.REQUIRED,timeout=30)//超时30秒
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)//数据库隔离级别

分享到:
评论

相关推荐

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    10. **spring-tx-3.2.0.RELEASE.jar**:事务管理模块提供了编程和声明式的事务管理,支持JTA(Java Transaction API)和本地事务。这使得在Spring应用中管理事务变得容易。 这组Spring 3.2.0库的完整集合,为开发者...

    spring五种事务配置demo

    测试spring事务管理 搭建了ssh框架的web工程 本工程用到的数据库表很简单 user(id, name) 可自行创建 本例所有的事务放在service层进行管理,方法中间抛出运行时异常以测试是否回滚 Spring配置文件中关于事务...

    spring-transaction-demo:spring-transaction-demo

    综上所述,"spring-transaction-demo"项目是一个极好的学习资源,帮助开发者理解和掌握Spring事务管理的精髓,特别是其事务传播机制。通过实践这些示例,可以提升开发者在实际项目中的事务处理能力。

    spring-transaction-demo.rar_DEMO_springboot_wash1vw

    《Spring Boot事务管理实战教程——基于spring-transaction-demo项目》 在软件开发中,事务管理是确保数据一致性、完整性和可靠性的关键环节。本教程将以`spring-transaction-demo`项目为示例,深入探讨如何在...

    spring-framework-4.3.6.RELEASE-dist.zip

    Spring Framework 是一个开源的Java平台,它为构建企业级应用提供了全面的编程和配置模型。这个框架的核心特性是依赖注入(Dependency Injection,DI),用于管理对象的生命周期和配置。Spring 框架的设计目的是使...

    spring-transaction.jar.zip

    "spring-transaction.jar"正是提供了Spring事务管理的类库,它包含了一系列用于处理事务的接口、类和配置元素,使得开发者能够方便地实现事务控制。 一、Spring 事务管理概述 Spring事务管理分为编程式事务管理和...

    spring事务配置的5中方式

    Spring 事务配置是Spring框架中不可或缺的一部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager和代理机制。...

    spring-jdbc-4.2.4.RELEASE.jar,spring-tx-4.2.4.RELEASE.jar,jdbcTemplate使用的jar包

    这个jar包是Spring的事务管理模块,提供了声明式事务管理(Declarative Transaction Management)和编程式事务管理(Programmatic Transaction Management)。声明式事务管理是Spring的一大特色,通过在XML配置或...

    spring-framework-4.3.6.RELEASE

    此外,它还提供了Transaction Management API,用于处理跨多个数据库操作的事务。 4. **Web MVC**: Spring的Model-View-Controller(MVC)框架是构建Web应用的首选,它提供了一种解耦的方式处理请求和响应。4.3.6...

    Spring-Struts-IBatis-AOP-Transaction

    编程式事务管理需要开发者手动调用 begin/commit/rollback 方法,而声明式事务管理则更简洁,只需在方法上添加 @Transactional 注解,Spring 就会自动处理事务的开始、提交和回滚。 **SSI 集成** 在 "17-Prj-...

    Spring在Transaction事务传播行为种类

    ### Spring中的Transaction事务传播行为种类详解 #### 一、引言 在开发基于Spring框架的应用程序时,事务管理是确保数据一致性的重要手段之一。Spring框架提供了丰富的事务管理功能,其中包括了事务传播行为...

    spring-hibernate-maven-transaction整合

    4. **配置Transaction管理**:在`applicationContext.xml`中配置PlatformTransactionManager,选择合适的事务管理策略,如DataSourceTransactionManager(适用于JDBC)或HibernateTransactionManager(适用于...

    struts2-spring-plugin-2.3.4.jar

    2. **事务管理(Transaction Management)**:Spring 提供了强大的事务管理功能,能够控制多个数据库操作是否作为一个事务进行。整合Struts 2 和Spring 后,我们可以在Spring 配置文件中定义事务规则,并让Spring ...

    Spring4.2.3框架官方包下载spring-framework-4.2.3.RELEASE-dist.zip

    4.2.3版本支持JPA、Hibernate、MyBatis等多种持久化技术,并且引入了事务管理,如@Transaction注解,可以方便地进行事务控制。同时,Spring Data JPA和Spring Data MongoDB等子项目提供了一致的API,简化了数据访问...

    spring的annotation-driven配置事务管理器详解 (多数据源配置

    Spring 的 Annotation-Driven 配置事务管理器详解(多数据源配置) Spring 框架提供了强大的事务管理机制,通过使用 Annotation-Driven 配置,可以方便地管理事务。在多数据源配置中,spring 的 Annotation-Driven...

    spring事务配置的五种方式

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

    spring-framework-reference

    2. **AOP**:Spring的AOP模块允许开发者定义横切关注点,如日志、事务管理等,将其与业务逻辑分离,实现代码的模块化和可复用性。 3. **数据访问/集成**:Spring提供了对各种持久层技术的支持,包括JDBC、ORM...

    spring-framework-2.0-m1-with-dependencies.rar

    5. **Transaction Management**:事务管理功能进一步完善,支持声明式事务处理,通过注解或者XML配置即可完成事务管理。 三、依赖解析 在"spring-framework-2.0-m1-with-dependencies.rar"中,包含了Spring框架...

    spring-tx-4.2.4.RELEASE.zip

    4.2.4.RELEASE 版本是 Spring TX 的一个稳定版本,它包含了对 JTA(Java Transaction API)的支持,可以处理跨数据库和跨资源的事务,同时兼容 JDBC、Hibernate、JPA 等多种持久化技术。这个版本还修复了一些已知...

    spring-transaction-synchronization:Spring事务同步示例

    - 一个名为“spring-transaction-synchronization-master”的项目可能包含了源码示例,展示了如何配置和使用Spring事务同步功能。 - 可能包括了Spring配置文件(如applicationContext.xml)、Java配置类、业务服务...

Global site tag (gtag.js) - Google Analytics