概念:从这一点设置的时间点开始(时间点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中设置只读事务是利用上面两种方式

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

最新文章

  1. grunt 单独压缩多个js和css文件【转】
  2. Flash Builder 4.7 注册机完美激活方法
  3. 服务端JavaScript之Rhino
  4. 无法将匿名方法转换为System.Delegate
  5. shell 与用户交互
  6. ALAssetsLibrary
  7. Android中文API (110) —— CursorTreeAdapter
  8. C++的三大特性:封装、继承和多态性的详解
  9. 洛谷 P2325 [SCOI2005]王室联邦
  10. 20175224 2018-2019-2 《Java程序设计》第八周学习总结
  11. saltstack实战1-salt-syndic
  12. Oracle的SQL优化思路
  13. JDBC 心得
  14. cocosCreater开发时遇到的问题
  15. 【题解】ID分配
  16. 关于package.json
  17. XML 增、删、改
  18. 禁止光盘优盘自动播放(Shell Hardware Detection服务)
  19. django1.10使用本地静态文件
  20. jqgrid 基础应用

热门文章

  1. 获取mac地址和IP地址方式
  2. jQuery 入门笔记1
  3. python批量下载图片3
  4. Eclipse SVN还原文件到历史版本详解
  5. hdu 5750(数论)
  6. Nodejs调用Aras Innovator服务,处理AML并返回AML
  7. Windows下python的第三方库的安装
  8. JavaScript处理异步请求的几种方式(取异步函数返回值)
  9. SPOJ GSS2 - Can you answer these queries II(线段树 区间修改+区间查询)(后缀和)
  10. C++—揭秘大牛博客一些不同凡人的写法