@Transactional(readOnly = true)

@Transactional(readOnly = true)意思

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

  1. 只读事务内,不能进行增、删、改操作,否则出现异常:cannot execute statement in a read-only transaction;
  2. 只读事务内,同一个查询方法的多次调用查询结果一致,不会读取到其他事务修改的数据;
  3. 加只读事务,ORM框架会对其进行查询优化;

几种设置只读事务的方法:
(1)在JDBC中,指定只读事务的办法为: connection.setReadOnly(true);
(2)在Hibernate中,指定只读事务的办法为: session.setFlushMode(FlushMode.NEVER);
此时,Hibernate也会为只读事务提供Session方面的一些优化手段
(3)在Spring的Hibernate封装中,指定只读事务的办法为: bean配置文件中,prop属性增加“read-Only”
或者用注解方式@Transactional(readOnly=true)

参考 博客1(https://www.zhihu.com/question/39074428) 博客2:https://www.pianshen.com/article/2061695048/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值