概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据)

应用场合:

如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性; 
如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持。
【注意是一次执行多次查询来统计某些信息,这时为了保证数据整体的一致性,要用只读事务】

怎样设置:

对于只读查询,可以指定事务类型为readonly,即只读事务。
由于只读事务不存在数据的修改,因此数据库将会为只读事务提供一些优化手段,例如Oracle对于只读事务,不启动回滚段,不记录回滚log。

(1)在JDBC中,指定只读事务的办法为: connection.setReadOnly(true);

(2)在Hibernate中,指定只读事务的办法为: session.setFlushMode(FlushMode.NEVER); 
此时,Hibernate也会为只读事务提供Session方面的一些优化手段

(3)在Spring的Hibernate封装中,指定只读事务的办法为: bean配置文件中,prop属性增加“readOnly”
或者用注解方式@Transactional(readOnly=true)
【 if the transaction is marked as read-only, Spring will set the Hibernate Session’s flush mode to FLUSH_NEVER, 
and will set the JDBC transaction to read-only】也就是说在Spring中设置只读事务是利用上面两种方式

在将事务设置成只读后,相当于将数据库设置成只读数据库,此时若要进行写的操作,会出现错误

转载于:https://www.cnblogs.com/moxiaotao/p/9332310.html

Spring read-only=true 只读事务的一些概念相关推荐

  1. spring 事务管理之只读事务@Transactional(readOnly = true)

    我们可以使用 @Transactional(readOnly = true) 来设置只读事务 在将事务设置成只读后,当前只读事务就不能进行写的操作,否则报错.如下 Cause: java.sql.SQ ...

  2. Spring高级之Spring事务详解(用法、传播行为、隔离级别、只读事务、事务条件)

    前言 这是之前开始学spring的时候的笔记,现在添加了一些理解,然后把他搬到博客上来. 事务概述: 这里仅对数据库事务进行一个概述,要详细的可以查询相关文章 在JavaEE企业级开发的应用领域,为确 ...

  3. 关于只读事务:@Transactional(readOnly = true)

    一:只读事务是否做无用功?文章链接:只读事务是否只做无用功 @Transactional(ReadOnly=true) mysql支持只读事务的. 只读事务内,不能增加.修改.删除内容,否则报Cann ...

  4. 带你理解 只读事务(@Transactional(readOnly = true)

    概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合: 如果你一次执行单条查询语句,则没有必 ...

  5. spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库

    spring 配置只读事务 这是有关我们为利用只读副本来提高应用程序性能而寻求的一系列博客文章. 对于这个项目,我们的目标是建立我们的spring数据应用程序,并使用read仓库进行写操作,并基于re ...

  6. spring 配置只读事务_只读副本和Spring Data第3部分:配置两个实体管理器

    spring 配置只读事务 我们之前的设置可以正常工作. 我们现在要做的是进一步发展,并配置两个单独的实体管理器,而不会影响我们之前实现的功能. 第一步是将默认实体管理器配置设置为主要配置. 这是第一 ...

  7. spring和mybatis整合进行事务管理

    1.声明式实现事务管理 XML命名空间定义,定义用于事务支持的tx命名空间和AOP支持的aop命名空间: <beans xmlns="http://www.springframewor ...

  8. java 数据库 事务 只读_不使用事务和使用只读事务的区别

    转转转,,还需要具体验证( 决定把readonly类型的事务完全去掉,以提高性能,这里有讨论:http://stackoverflow.com/questions/2562865/spring-tra ...

  9. spring mysql事物级别_mysql事务级别和spring中应用

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

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

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

最新文章

  1. R数据导入导出(一): read.table()和read.csv()的区别
  2. linux++tar打包目录,linux中tar命令打包目录与排除目录打包linux操作系统 -电脑资料...
  3. Feign-自定义配置
  4. 关于Ant与Maven(一)
  5. java 对象访问权限_Java面向对象编程之访问控制权限
  6. maya脚本用python还是mel_替换/替换材质的Maya Python/MEL脚本
  7. 计算机应用能力power,全国专业技术人员计算机应用能力考试专用教材——PowerPoint 2003中文演示文稿5日通题库版(双色)(附光盘) - 中国考研网...
  8. flume---2中channel file和memory
  9. .NET 3.5 : 读写RSS或者ATOM
  10. 舰船目标检测的学习笔记
  11. Python 单元测试
  12. python100例图案_python100例 21-30
  13. CentOS安装中文包
  14. Wsus 清理的计划任务
  15. c语言ut测试白盒测试方法,白盒测试
  16. 淘宝技术这十年(淘宝技术大学校长解密淘宝十年)
  17. RMI(Remote Method Invocation)原理浅析
  18. springcloud 微服务的组成部分
  19. web应用开发 -- 课堂作业 个人简介
  20. stream filter 多条件筛选

热门文章

  1. Hibernate中一二级缓存使用详解
  2. 开局崩盘!IDEA 2020 无法启动的解决办法|赠送 IDEA 2020 新功能
  3. Zuul 代理文件上传、为路由提供 hystrix 回退、过滤器、超时时间
  4. CentOS 7.x 安装 Maven
  5. Spring boot 拦截器(HandlerInterceptor) 与 自定义资源映射虚拟路径,WebMvcConfigurer
  6. mysql56允许远程连接_mysql允许远程连接的方法
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_1_File类的概述
  8. Springboot 默认加载文件(可直接访问、不可直接访问)是出现的问题
  9. 写shell工具类,一个常用实例
  10. .net 委托 +lamda表达式