定义 从设置的时间点(时间点beta)开始到事务结束的过程中,该事务将看不见其他事务所提交的数据,即查询中不会出现别人在beta之后提交的数据。

    应用场合 对于一个函数,如果执行的只是单条查询语句,则没有必要启用事务支持,数据库默认支持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”;
    (4)使用注解 @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】,在将事务设置成只读后,相当于将数据库设置成只读数据库,此时若要进行写的操作,会出现错误。

只读事务@Transactional(readOnly = true)的更多相关文章

  1. 只读事务(@Transactional(readOnly = true))的一些概念

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

  2. Spring 注解@Transactional readOnly=true

    引子 今天下班后,以前同事小胖问我Spring  Service类中的注解@Transactional readOnly=true的作用.做为他眼中的高人,我自然要装下A-C.居然想都没有想就说是注解 ...

  3. @Transactional(readOnly=true) in Spring

    http://www.skill-guru.com/blog/2010/12/19/transactionalreadonlytrue-in-spring/ @Transactional(readOn ...

  4. Spring的@Transactional(readOnly=true)注解,对其效果进行测试

    https://blog.csdn.net/xcdsdf14545/article/details/86164012

  5. Spring read-only="true" 只读事务的

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

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

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

  7. 关于MYCAT 读写分离,与只读事务的问题.

    习惯性为了复用mysql连接,喜欢加上@Transactional(readOnly = true) 只读事务,很多零碎的查询下,速度会快一些,也环保一些. 最近用mycat做了读写分离,其中一个查询 ...

  8. 【Spring】16、注解事务 @Transactional

    概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型, ...

  9. ssh只读事务的管理

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

随机推荐

  1. centos7安装elasticsearch-head

    elasticsearch-head安装前准备 1.操作系统64位CentOS Linux release 7.2.1511 (Core)2.git是必需的elasticsearch-head是一款开 ...

  2. 转载:CSS垂直居中总结

    原文地址:http://www.cnblogs.com/dojo-lzz/p/4419596.html 工作中遇到垂直居中问题,特此总结了一下几种方式与大家分享.本文讨论的垂直居中仅支持IE8+ 1. ...

  3. oracle查找重复记录-转

    SELECT *FROM t_info aWHERE ((SELECT COUNT(*)          FROM t_info          WHERE Title = a.Title) &g ...

  4. 树莓派集群实践2——修改树莓派3 指定IP,DNS要修改dhcpcd.conf

    vim /etc/dhcpcd.conf 修改如下 interface eth0 static ip_address=192.168.1.177/24 static routers=192.168.1 ...

  5. 利用反射将Model转化为sql

    public string GetInsertSqlByModel(Object o) { StringBuilder sbStart = new StringBuilder(); StringBui ...

  6. [Object Tracking] How to learn Active contour model - Snake Model

    常见四种跟踪的思路: 区域:人体肢体识别.跟踪 模型:人体面部识别.跟踪 特征:摄像头3D定位 主动轮廓:(蛇模型属于这er,数学基础<图像处理的偏微分方程方法>,也是最流行的一个目前) ...

  7. Qt编写echart仪表盘JS交互程序支持webkit和webengine(开源)

    Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,是本人用过的国产作品中最牛逼的,记得四五年前就在qt中使用过,当时用的浏览器控件是webkit,由于5.6以后的版本不再支持webk ...

  8. 查看Oracle数据库SQL执行历史

    -- 找出哪个数据库用户用什么程序在最近三天执行过delete或truncate table的操作 SELECT c.username, a.program, b.sql_text, b.comman ...

  9. 10.24CRM完成

    2018-10-24 16:16:59 已经完成了crm项目: 项目做完了,这几天可以安静整理Django啦!!!把博客整理一下! 然后再过几天针就可以回学校啦!! 今天程序员节  节日快乐!hell ...

  10. ABP之事件总线(2)

    在上一篇文章中,我们复习了一下事件的经典的发布订阅模式,同时对是事件源和时间处理逻辑进行抽象统一,用起来也没有问题.但是还是有很多的问题,比如说我们Handle方法其实是违背了单一性的原则的,里面混杂 ...