spring中readOnly的定义,并不是不能在事务中进行修改等DML操作,它只是一个“暗示”,提示数据库驱动程序和数据库系统,这个事务并不包含更改数据的操作,那么JDBC驱动程序和数据库就有可能根据这种情况对该事务进行一些特定的优化,比方说不安排相应的数据库锁,以减轻事务对数据库的压力,毕竟事务也是要消耗数据库的资源的。

只读事务仅仅是一个性能优化的推荐配置而已,并非强制你非要这样处理不可。

结合源码的一个解读分析具体是通过什么方式来进行优化:

如果是只读事务,Spring会将transactionContext的 isFlushModeNever 设置为true;

当事务被标识为只读事务时,Spring可以对某些可以针对只读事务进行优化的资源就可以执行相应的优化措施,上面Spring告之hibernate的session在只读事务模式下不用尝试检测和同步持久对象的状态的更新。

总结:
如果在使用事务的情况下,所有操作都是读操作,那建议把事务设置成只读事务,或者事务的传播途径最好能设置为 supports (运行在当前的事务范围内,如果当前没有启动事务,那么就不在事务范围内运行)或者 not supports (不在事务范围内执行,如果当前启动了事务,那么挂起当前事务),这样不在事务下,就不会调用transactionContext.managedFlush(); 方法。
所有只读事务与读写事务的比较大的运行性能区别就是只读事务避免了Hibernate的检测和同步持久对象的状态的更新,提升了运行性能。

对于Spring中事务的readonly属性理解相关推荐

  1. spring+mybatis事务的readonly属性无效

    在Spring配置事务中设置的read-only="true"不起作用,仍可以执行写操作:但是其他的正常. 查看了一下DataSourceTransactionManager这个类 ...

  2. spring中事务和传播属性配置代码

    对service层进行事物管理 1 配置事物管理器 2 配置事物 3 对com.nufront.euht.service下的包和子包进行AOP拦截

  3. Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现

    前言 本专题大纲如下: 事务专题大纲 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用中的问题,这两天想了想还是单独写一篇并作为事 ...

  4. Spring事务配置的五种方式和spring里面事务的传播属性和事务隔离级别、不可重复读与幻读的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spr ...

  5. Spring中事务的使用、抽象机制及模拟Spring事务实现

    本文大纲如下: Spring事务应用大纲 编程式事务 Spring提供了两种编程式事务管理的方法 使用 TransactionTemplate 或者 TransactionalOperator. 直接 ...

  6. 事务例子_Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现...

    Spring中事务的使用示例.属性及使用中可能出现的问题 前言 本专题大纲如下: 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用 ...

  7. React router 的 Route 中 component 和 render 属性理解

    React router 的 Route 中 component 和 render 属性理解 Route 标签的三个互斥属性 render.component.children Route 就是用来匹 ...

  8. Spring中bean标签的属性和值:

    Spring中bean标签的属性和值: <bean name="user" class="com.pojo.User" init-method=" ...

  9. spring中事务控制的一组API

    Spring事务控制我们要明确的 第一:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案. 第二:spring框架为我们提供了一组事务控制的接口.具 ...

最新文章

  1. Python知识点5——字典
  2. Problem E: 零起点学算法25——判断是否直角三角形
  3. 5天不再惧怕多线程——第三天 互斥体
  4. findbugs插件_提升编码效率的IntelliJ IDEA必备插件
  5. mysql索引 聚集索引_Mysql 索引实现原理. 聚集索引, 非聚集索引
  6. mysql消除重复行的关键字_MySQL 消除重复行的一些方法
  7. 作业四 | 个人项目-小学四则运算 “软件”之初版
  8. vue_过滤器_note
  9. 华为机试HJ80:整型数组合并
  10. 爬虫python能做什么-Python 爬虫一 简介
  11. 麻省理工-机器学习导论
  12. Result的类型分析和总结
  13. oracle10g 数据库导入dmp数据
  14. 内边距(padding)
  15. 【NOIP模拟题】【DP】【LIS】【中缀表达式】2016.11.15 第一题 小L的二叉树 题解
  16. 偏差代替误差进行稳态分析
  17. <table>表格标签属性
  18. 友盟的社会化分享和第三方登录集成步骤
  19. unable to prepare for development xcode 13
  20. YOLACT实时实例分割

热门文章

  1. 计算机中职老师教学总结,中职教师工作总结
  2. Python round()函数的严谨用法
  3. MATLAB数据分析与挖掘 --数据预处理篇
  4. 前端CSS颜色代码大全
  5. python找不到vcruntimei_安装VS2019的时候提示 vc_runtimeminimum_x86.msi 文件找不到
  6. postman传参后乱码
  7. 改变体质,预防癌症第一步 (分享大家学习)
  8. PVE系列教程(十七)、安装Redis服务器
  9. LSTM(units, input_shape=(window, feanum), return_sequences=True/False)
  10. 开方算法的设计与实现