2019独角兽企业重金招聘Python工程师标准>>>

大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅。

事物注解方式: @Transactional

当标于类前时, 标示类中所有方法都进行事物处理

例子:

@Transactional
public class TestServiceBean implements TestService {}

当类中某些方法不需要事物时:

@Transactional
public class TestServiceBean implements TestService {
    
    private TestDao dao;
    
    public void setDao(TestDao dao) {
        this.dao = dao;
    }
    
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public List<Object> getAll() {
        return null;
    }
    
}

事物传播行为介绍: 
@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没有声明事务,那就不用事务.

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

事务隔离级别:
@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

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

转载于:https://my.oschina.net/rouchongzi/blog/161587

Spring 使用注解方式进行事务管理相关推荐

  1. Spring 使用注解方式进行事物管理

    Spring 使用注解方式进行事物管理 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transaction ...

  2. Spring AOP注解方式实现日志管理

    文章目录 自定义注解 BussLog BussLogAspect 前言:使用注解方式实现日志管理,可以使我们的程序变的清晰.简单,不和很多业务代码混在一起. 实现思路大致分为四点 设计日志表和日志类, ...

  3. Spring 注解方式实现 事务管理

    2019独角兽企业重金招聘Python工程师标准>>> 使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间 <beans xmlns="h ...

  4. 注解mysql事物管理_Spring 使用注解方式进行事务管理

    事务的传播行为和隔离级别 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transactional 当标于类 ...

  5. 事务配置_SSH(五)- 使用注解方式配置事务管理

    步骤1:修改applicationContext.xml步骤2:为ProductServiceImpl 添加注解步骤3:测试步骤4:MYSQL 表的类型必须是INNODB才支持事务 步骤 1 : 修改 ...

  6. Spring mvc注解方式使用事务回滚

    项目名:1ma1ma jdbc.xml <bean  id="dataSource" class="org.apache.commons.dbcp.BasicDat ...

  7. spring AOP自定义注解方式实现日志管理

    转:spring AOP自定义注解方式实现日志管理 今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接 ...

  8. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  9. Spring ORM示例 - 带有AOP事务管理

    Spring ORM示例 - 带有AOP事务管理 这是一个非常简单的Spring ORM示例,向您展示如何使用Spring配置应用程序 依赖注入(@Autowired annotation), JPA ...

最新文章

  1. 算法每日练习之判断完数
  2. 赠书:“替代Linux”?!全球技术海啸来临!
  3. Thinking in work
  4. [笔试面试][code_by_hand]输出第二个字符串在第一个字符串中的连接次序
  5. 028_vue路由嵌套
  6. 基于MapWinGis的开发探索(三)--改善缩放、渲染、显示文本
  7. void main()是错误的
  8. c语言用户登录成功才能,c语言用户登录.docx
  9. WINDOWS自带的压缩,解压工具命令
  10. 190707每日一句,一堂重要的人生之课Let it go, 穷则变变则通
  11. ATK-ESP8266 串口转WIFI模块 简历
  12. 【翻译】torch.device的使用举例
  13. 嵌入式开发-服务器(一) MQTT服务器
  14. 设计模式总结--李建忠
  15. Java基础语法等等
  16. 图片瀑布流加载和购物车
  17. 5种写作技巧,即使是业余爱好者也能像专业人士一样写作
  18. 2021天津高考高中成绩查询系统,2021天津市地区高考成绩排名查询,天津市高考各高中成绩喜报榜单...
  19. linux系统中的挂载有什么用,linux 挂载详解
  20. 1.2 CSS 基础

热门文章

  1. 想成为优秀的管理者,不能不知道的决策方法
  2. 这可能是最简单易懂的机器学习入门
  3. SAP MM 没有维护MRP 视图的物料可以正常参与采购业务
  4. SAP LSMW Standard Batch (Direct) Input 方式制作的LSMW工具导入OPEN PO 单据时候’税码’字段的处理
  5. 干货丨大牛带你走向机器学习“正道”:小朋友才迷信算法,大人们更重视工程实践
  6. 中文分词jieba的简单使用
  7. 北大发布最新《图神经网络推荐系统》2020综述论文,27页pdf
  8. ​MEMS在未来面临的挑战
  9. 坦途与波折:我们需要什么样的人工智能?
  10. 工业富联2018年报来了!上市后首张成绩单大起底