码迷,mamicode.com
首页 > 数据库 > 详细

spring+mybatis中两次相同条件查询时 session一级缓存与数据库隔离级别需要注意的点

时间:2020-06-11 21:55:52      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:comm   nsa   app   commit   cache   use   sdn   table   注意   

@Override
@Transactional(propagation = Propagation.REQUIRED,isolation= Isolation.REPEATABLE_READ)
public User1 hsq_test_read(Integer id) {
User1 user1 = user1Mapper.selectByPrimaryKey(id);

User1 update =new User1();
update.setId(id);
update.setName("uuuuuuu");
int k=9;
//两次查询是否有更新
user1Mapper.updateByPrimaryKey(update);
//update ing debug
int i=9;

User1 user2 = user1Mapper.selectByPrimaryKey(id);
return user2;

//spring + mybatis 中
// 不开启flushCache="true"时, 第二次查询 直接用第一次查的缓存,mybatis session会话 (两次之间没更新操作) isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样
// 特别注意 https://blog.csdn.net/oqq0147/article/details/83149117
// 不开启flushCache="true"时, 当2次查询中间有更新操作时,查询的结果是更新后的结果 isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样


// 开启 flushCache="true"时, 第二次查询与第一次查询(两次之间没更新操作) isolation= Isolation.REPEATABLE_READ 读取的内容一样因为可重读,
// isolation= Isolation.READ_COMMITTED 读取的内容不一样,读已提交
// 开启 flushCache="true"时, 当2次查询中间有更新操作时,查询的结果是更新后的结果
// isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样
// isolation= Isolation.REPEATABLE_READ 读取的是更新后的结果 事务1 read-》update ing-->read 这时候事务2
                                                                                                                                            更新同一条sql是不能更新的 是阻塞的 
}

 

spring+mybatis中两次相同条件查询时 session一级缓存与数据库隔离级别需要注意的点

标签:comm   nsa   app   commit   cache   use   sdn   table   注意   

原文地址:https://www.cnblogs.com/hsq666666/p/13095929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!