`
dou_shini8820
  • 浏览: 80783 次
社区版块
存档分类
最新评论

spring @Transactional配置说明

    博客分类:
  • SSH
 
阅读更多
注:要在 Spring 中使用 @Transactional 注释,必须在 Spring 配置文件中添加以下代码行:
<tx:annotation-driven transaction-manager="transactionManager"/>
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked ,如果遇到checked意外就不回滚。
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)

Spring事务的传播行为

一、在service类前加上@Transactional,声明这个service所有方法需要事务管理,每一个业务方法开始时都会打开一个事务。那么在不需要事务管理的(只查询的)方法上加:@Transactional(propagation=Propagation.NOT_SUPPORTED) , 还可以加上:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),这样就做成一个只读事务,可以提高效率。

@Transactional 注释的默认传播模式是 REQUIRED,总的来说,在使用基于 ORM 的框架时,只读标志基本上毫无用处,在大多数情况下会被忽略。但如果您坚持使用它,请记得将传播模式设置为 SUPPORTS(如清单 9 所示),这样就不会启动事务。

二、如果不在service类前加上@Transactional,那么在需要添加事物的方法前加上@Transactional(propagation=Propagation.REQUIRED)



小知识:
1、常用各种属性的意义:
REQUIRED:业务方法需要在一个容器里运行。如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务。
NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。
SUPPORTS:该方法在某个事务范围内被调用,则方法成为该事务的一部分。如果方法在该事务范围外被调用,该方法就在没有事务的环境下执行。

2、事物超时设置:
@Transactional(timeout=30) //默认是30秒

3、事务隔离级别:
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
读取未提交数据(会出现脏读, 不可重复读) 基本不使用
@Transactional(isolation = Isolation.READ_COMMITTED)
读取已提交数据(会出现不可重复读和幻读)
@Transactional(isolation = Isolation.REPEATABLE_READ)
可重复读(会出现幻读)
@Transactional(isolation = Isolation.SERIALIZABLE)
串行化

MYSQL: 默认为REPEATABLE_READ级别
SQLSERVER: 默认为READ_COMMITTED

4、在单独使用不带任何参数的 @Transactional 注释时,传播模式要设置为 REQUIRED,只读标志设置为 false,事务隔离级别设置为 READ_COMMITTED,而且事务不会针对受控异常(checked exception)回滚。
分享到:
评论

相关推荐

    浅谈Spring中@Transactional事务回滚及示例(附源码)

    为了使用基于@Transactional的事务管理,需要在Spring中进行配置。下面是一个简单的示例: 首先,需要在Spring的配置文件中添加tx名字空间: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans...

    spring事务配置的五种方式

    2. **基于注解的事务配置**:通过在服务层类或方法上使用`@Transactional`注解来配置事务,这是最常用的方式之一。这种方式大大简化了事务配置,提高了代码的可读性和可维护性。 3. **基于AspectJ的事务配置**:...

    jdbc+spring+mysql事务理解和分析

    以下是对`jdbc+spring+mysql事务理解和分析`的详细说明: 1. **原子性(Atomicity)**:这是事务的基本特性,表示事务中的所有操作要么全部成功,要么全部回滚。如果在事务执行过程中发生错误,数据库会撤销所有已...

    详细说明spring事务配置的5种方式

    通过在配置中启用AspectJ自动代理和事务注解支持,Spring会自动识别带有`@Transactional`的方法,并在运行时使用AspectJ织入事务处理代码。这种方式无需额外的代理配置,事务管理更加透明。 5. **使用...

    spring事务配置详解

    下面是五种Spring事务配置方式的详细说明: **第一种方式:基于代理的声明式事务管理** 在这个配置中,每个业务对象(如DAO)都有一个事务代理。`TransactionProxyFactoryBean`被用来创建这个代理,它需要指定事务...

    spring ibatis 配置(包括事务管理)

    以下是关于"spring ibatis 配置(包括事务管理)"的详细说明: 1. **引入依赖**:首先,我们需要在项目中添加Spring和iBatis的相关依赖。通常,这会在Maven或Gradle的配置文件中完成,确保引入了正确的版本。 2. *...

    零基础认识 Spring Boot.docx

    在 Service 的方法上添加@Transactional 注解,即说明其为同个事务。只有在 innodb 引擎下事务才能生效。 数据库操作 使用 JPA 可以实现数据库操作。首先需要添加 pom.xml 文件中的组件,然后配置 application.yml...

    spring声明事务的配置

    以下是对Spring声明式事务配置的详细说明: 1. **Spring 1.x 声明事务方式** 在Spring 1.x中,声明式事务有两种主要的配置方式,第一种是通过XML配置逐个为每个业务类创建事务代理。首先,你需要声明一个事务管理...

    Spring Hibernate 事务处理 详细说明

    3. **Hibernate事务配置:**在Spring中,需要配置Hibernate SessionFactory,并将其注入到需要进行数据库操作的服务中。同时,通过`PlatformTransactionManager`接口(如HibernateTransactionManager)配置事务管理...

    spring4.0+spring MVC4.0+hibernate4.3全注解

    Spring的注解如`@Component`、`@Service`、`@Repository`和`@Controller`分别用于标记不同层次的组件,简化了传统XML配置。 Spring MVC 4.0是Spring框架的一部分,专门用于构建Web应用的模型-视图-控制器(MVC)...

    spring+mybatis中以配置文件方式实现增删改查

    除了XML配置,Spring还支持使用注解来简化配置,如`@Autowired`进行自动装配,`@Transactional`进行事务管理。 10. **整合测试**: 使用JUnit或Spring Test进行单元测试,确保增删改查操作的正确性。可以使用`@...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...

    Spring事物配置的五种模式

    本文将详细介绍五种常见的Spring事务配置模式,并结合具体的配置示例进行说明。 #### 一、每个Bean都有一个代理 这种方式是最直接也是最简单的配置方法。它通过为每个需要事务支持的Bean创建一个代理来实现。这种...

    Spring事务管理失效原因汇总

    描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现问题,暴露了开发者对Spring事务机制不足够了解的问题。标签“Spring 事务 失效”直接概括了本文的知识点范围,即Spring...

    Spring声明式事务配置管理方法

    以下是关于Spring声明式事务配置管理的详细说明: 1. **事务管理器配置**: 在`/WEB-INF/applicationContext.xml`文件中,我们需要定义一个事务管理器Bean。通常,对于Hibernate,我们会使用`...

    Spring事务配置的五种方式.doc

    以下是这五种配置方式的详细说明: 1. **每个Bean都有一个代理** 在这种配置方式下,每个需要事务管理的Bean都会有一个特定的代理。代理Bean是通过`TransactionProxyFactoryBean`创建的,它负责在方法调用前后添加...

    Springboot 常用注解汇总说明

    Spring Boot 常用注解汇总说明 一、启动注解 @SpringBootApplication 在Spring Boot应用中,`@SpringBootApplication`是最核心的注解,它实际上是一个复合注解,包含了`@SpringBootConfiguration`、`@...

Global site tag (gtag.js) - Google Analytics