最新回答 / 崔勇
首先一级缓存必须是同一个session,你的session2提交并不会对session1的缓存进行update,而且这种事应该编码时避免的错误,session在使用完后及时关闭。这个session缓存和数据库事务应该是没什么关系的。个人理解,如有偏差欢迎指正。
2020-11-22
最赞回答 / 属牛的金牛座搬砖工
session的生命周期在事务内,也就是说,事务1和事务2分别有对应的session1和session2。一级缓存的作用域在同一session内,所以事务2提交只会清空session2的缓存,对session1没有影响。
2020-09-01
最新回答 / weixin_慕九州2048595
二级缓存中:一个SqlSession产生的二级缓存必须在关闭或者提交的时候才有效。因为只有关闭后,才知道你没有做更新等操作,产生的二级缓存才不会被销毁。这就跟事务是一样的,一个事务提交之后,其他的事务才能获取到 前面事务修改的数据。
2020-08-11
最新回答 / burg_xun
我感觉没必要究竟于这个字眼, 脏读 在MySql 里面的表现 是 读到事物未提交的数据,改数据可能会发生回滚,所以叫脏读,数据库事物隔离级别 读未提交 是用来解决这个问题的。而这边老师 说的 脏读 是不同的SqlSessionFactory下的问题,这边你所说的 没法读到最新数据的问题,可以理解为脏读的呀,因为缓存来源是从数据库里面读然后缓存下来的,如果SqlSessionFactoryA 里面对数据做了更新, 这个时候SqlSessionFactoryB 里面的可能还是旧的数据,也可以称之为脏数...
2020-06-26
最赞回答 / ITLover
Mybatis Cache一级缓存特点自动启用通过在setting中设置localCacheScope= STATEMENT(默认为SESSION)全局禁用一级缓存在Dao接口方法上添加注解:@Options(flushCache=Options.FlushCachePolicy.True),禁用这个方法的一级缓存命中原则,同一SqlSession内,以下5个条件组成key,放入缓存中:条件一:statementId相同条件二:sql上用到的参数要一样条件三:分页参数要一样 条件四:sql语句的文本要一样...
2020-06-14