`

spring @Transactional配置说明 .

    博客分类:
  • java
 
阅读更多

事务注解说明
@Transactional 类事务说明机制

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

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

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

Propagation.REQUIRED

Propagation.NOT_SUPPOKTED

Propagation.REQUIRESNEW

propagation.MANDATORY

Propagation.SUPPOKTS

Propagation.Never

Propagation.NESTED

XML配置事物

注解配置事物例子

public class Bean1{
    @Transaction(propagation=Propagation.Required)
    public void update(){
        executeUpdate(SQL);
    }
}

public class Bean2{
    @Transaction(propagation=Propagation.Required)
    public void update(){
        executeUpdate(SQL);
    }
}

public class TransactionExample {
    @Transaction(propagation=Propagation.Required)
    public void payment(){
        daoBean1.update();
        daoBean2.update();
    }
}

 

//事务传播属性
    @Transactional(propagation=Propagation.REQUIRED) //如果有事务,那么加入事
务,没有的话新建一个(不写的情况下)
    @Transactional(propagation=Propagation.NOT_SUPPORTED) //容器不为这个方法
开启事务
    @Transactional(propagation=Propagation.REQUIRES_NEW) //不管是否存在事务,
都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
    @Transactional(propagation=Propagation.MANDATORY) //必须在一个已有的事务中
执行,否则抛出异常
    @Transactional(propagation=Propagation.NEVER) //必须在一个没有的事务中执
行,否则抛出异常(与Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.SUPPORTS) //如果其他bean调用这个方
法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
    /*public void methodName(){
        update();//本类的修改方法 1
            otherBean.update();//调用其他类的修改方法
        update();//本类的修改方法 2
    }
    other失败了不会影响 本类的修改提交成功
    本类update的失败,other也失败
    */
@Transactional(propagation=Propagation.NESTED)

@Transactional (propagation = 
Propagation.REQUIRED,readOnly=true) //readOnly=true只读,不能更新,删除

@Transactional (propagation = Propagation.REQUIRED,timeout=30)//设置超时时间

@Transactional (propagation = 
Propagation.REQUIRED,isolation=Isolation.DEFAULT)//设置数据库隔离级别

分享到:
评论

相关推荐

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

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

    spring-tx-4.2.xsd.zip

    压缩包内的`spring-tx-4.2.xsd.txt`文件可能包含了对`spring-tx-4.2.xsd`的详细说明,帮助开发者理解每个元素和属性的含义及用法。而`spring-tx-4.2.xsd`文件本身是XML Schema的定义,用于验证和解析包含事务配置的...

    spring-framework-3.0.0.RC3.rar

    首先,Spring 3.0.0.RC3引入了对Java 5和6的全面支持,包括利用注解驱动的编程模型,这使得代码更加简洁,减少了XML配置文件的依赖。例如,通过`@Component`、`@Service`、`@Repository`和`@Controller`等注解,我们...

    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中文帮助文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    Spring API

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    spring chm文档

    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面试题和答案.pdf

    - 在多数据源情况下,可以使用`@Transactional`注解的`propagation`属性配合不同的数据源配置来指定事务使用的数据源。 11. **Spring的事务回滚** - Spring事务管理基于事务的ACID属性,异常发生时根据回滚规则...

    Spring 2.0 开发参考手册

    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. 切入点...

    mybatis-spring-1.2.3.zip

    - `mybatis-spring-1.2.3-javadoc.jar` 包含了 MyBatis-Spring 的 API 文档,开发者可以通过查看文档了解各个类和接口的详细说明,便于理解和使用。 - `mybatis-spring-1.2.3-sources.jar` 提供了源代码,对于...

    spring事务配置的五种方式

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

    Spring3单元测试和集成测试

    本文将深入探讨Spring3中的单元测试和集成测试,并结合DBunit这一数据库测试工具进行说明。 首先,单元测试是针对软件的最小可测试单元进行验证,通常是一个方法。在Spring3中,我们可以使用JUnit作为基础测试框架...

    零基础认识 Spring Boot.docx

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

    spring事务配置详解

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

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

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

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

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

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

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

    Spring事物配置的五种模式

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

    《Java EE框架(SSM + Spring Boot + Vue.js 3)整合开发》实验教学大.docx

    9. **Spring Boot与SSM整合**:Spring Boot可以通过starter-pom简化SSM的集成,通过自动配置减少配置文件的数量,同时利用Spring Boot的特性实现快速启动和热部署。 10. **Vue.js 3与后端通信**:通过Ajax和RESTful...

Global site tag (gtag.js) - Google Analytics