Spring read-only="true" 只读事务的一些概念

标签: spring read only | 发表时间:2015-07-29 11:25 | 作者:zhouchaofei2010
出处:http://www.iteye.com

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

 

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

 

 

 转自: http://blog.csdn.net/MageShuai/article/details/4544191



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [spring read only] 推荐:

Spring read-only="true" 只读事务的一些概念

- - 企业架构 - ITeye博客
概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见. (查询中不会出现别人在时间点a之后提交的数据). 如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性; . 如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持.

mysql的table is read only 解决方法

- - CSDN博客系统运维推荐文章
今天,在centos6下把mysql没法启动的数据库文件夹复制到/usr/local/mysql/var下,结果在修改表时,提示”table isreadonly”的错误. 首先想到的是遇到了权限问题,所以就去/usr/local/mysql/var查看了下,果然所有者不是mysql,权限也不正确.

有关socket read

- - 五四陈科学院
以下内容由 [五四陈科学院]提供. 实际开发中,网络程序最可能遇到的就是数据没收到、收到错误数据这样诡异的问题.. 很多时候,都是由于对socket read的细节理解的不一致,导致了程序前后的矛盾. 下面详细阐述整个read的过程. read函数是负责从fd中读取内容.. 当读成功时, read返回实际所读的字节数.

db file sequential read等待事件总结

- - CSDN博客数据库推荐文章
该等待事件的参数:file#,first block#,and block count(一般是1)可以从dba_extents去确定访问的段,属于I/O类的等待. The Oracle process wants a block that is currently not in the SGA, and it is waiting for the database block to be read into the SGA from disk..

java socket 长连接read阻塞问题

- - PHP & Java
1 约定发送的数据长度,比如 http的 keepAlive 就是必须依赖这个的 Content-Length. 2 设置超时的时间,根据我的经验,只有在Socket级别设置才有效. socket.setSoTimeout(100); // 如果超过100毫秒还没有数据,则抛出 SocketTimeoutException.

使用Http-only Cookie来防止XSS攻击

- - 标点符
www服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地用到Cookie来标记访问者的状态. 只要获得这个Cookie,就可以取得别人的身份,入侵个人账户或者网站. 对于网站来说,一旦存在了xss漏洞就意味着入侵者可以在浏览器中执行任意的JS脚本,这时候获得Cookie就变得非常的简单.

applet遇到http-only cookie的处理方式

- - ITeye博客
      1、项目中用applet控件通过HTTP做一些数据的传输操作.       2、项目有用户权限控制,需要登录成功才能进行相关操作,发现用户未登录,则跳转到登陆页面.       3、项目有安全控制,cookie都设置成了http-only,http-only的cookie在js和applet中都是无法操作的.

Read It Later:2011年圣诞Kindle Fire销量接近iPad

- - 中文互联网数据研究资讯中心
根据阅读书目管理应用Read It Later最新数据显示,在2011圣诞节期间,下载Read It Later的亚马逊Kindle Fire设备数量几乎与iPad相同. 在平安夜那天,Read It Later的Kindle Fire用户仅占比5%,但圣诞节当天这一比例上升至14%.

iOS上Google Reader阅读体验–Read it later结合Reeder

- - 葡挞生活
Google Reader的一个典型问题是未阅读条目“超标”,超出1000+并不稀奇. 几天不读GR,未读条目就失控了. 虽然GR的阅读效率还是不能满足要求,但现阶段也没有比GR更好的阅读工具. 不过可以借助Reeder、Read it later、instapaper等工具来优化阅读体验. 自从用过 ipad上的Google Reader阅读客户端reeder之后,不得不说在平板上的阅读体验要比在电脑前好许多.

AMD 宣布委任 Lenovo 的 Rory Read 为公司主席和执行官

- 橙子 - Engadget 中国版
AMD 终于找到一个固定的 CEO 了. Read 为 CEO,并同时担任公司主席和董事会其中一员. Read 曾经在 IBM 待了 23 年,期间担任过不同的职位;他对上一个职位就是在 Lenovo 担任公司主席和 COO. 而 AMD 的前任 CEO Thomas Seifert 则会再次出任他之前担任过的 CFO ;在 Read 上任前, Seifert 曾经两次担任 AMD 的 CEO,第一次是在 Dirk Meyer 离开后出任临时 CEO,第二次则是在 2008 时替代离任的 Hector Ruiz.