休眠一级缓存-是否同步?

桑巴特

我知道一个事实,它SessionHibernate使用的一级缓存,一旦我们从中检索到一个实体session便会从而不是从DB中获取对具有相同标识符同一实体的后续get调用,直到is Open为止sessionsession

话虽如此,我对休眠如何将第一级缓存与数据库同步感到怀疑吗?考虑以下情形

//Lets say I have created the session

Session s1 = sessionFactory.getSession();
User u1 = s1.get(User.class, 1); //Getting User with ID=1
//s1 is not yet closed

//Lets say I create some other session

Session s2 = sessionFactory.getSession();
User u2 = s2.get(User.class, 1); //Getting User with ID=1
u2.setName("Abc"); // Changed a field
s2.save(u2); // Saved the changes to DB
s2.close(); //Closed the 2nd session

//Now when I once again retrieve User with ID=1 from s1, will I get updated User?
User u3 = s1.get(User.class, 1);// Here as per my understanding cache is used

所以我的问题是

  • 由于u3是从1级缓存中提取的,因此u3有更新后的值吗?
  • 如果有人在会话打开时直接更新DB并修改User对象,是否session与DB同步?

预先感谢您在此线程上花费的时间和精力

轴突

不,除非您明确要求,否则Hibernate不会做任何事情来将会话缓存中的实体状态与数据库进行同步。

通常这不是问题,因为活动工作通常发生在事务内部,并且事务内部的操作不应看到其他并发事务所做的更改(但是细节取决于隔离级别)。因此,在这种情况下,Hibernate的行为补充了事务隔离的典型语义。

在某些情况下,还需要显式同步实体的状态以反映同一事务内部所做的更改。这可能是由于批量更新查询或执行数据库触发器引起的。在这种情况下,您需要通过调用显式请求这种同步refresh()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

休眠一级缓存与查询缓存

来自分类Dev

休眠一级缓存与查询缓存

来自分类Dev

PHP:检查数组元素是否存在跳过一级

来自分类Dev

转换后备缓冲区(TLB)与向CPU的L1高速缓存是否处于同一级别?那么,我可以将虚拟地址转换与L1缓存访问重叠吗?

来自分类Dev

休眠:是否可以将瞬态字段保存在二级缓存中?

来自分类Dev

休眠:是否可以将瞬态字段保存在二级缓存中?

来自分类Dev

是否可以从平面文件加载数据并转储到休眠二级缓存中?

来自分类Dev

找出BST的叶子是否在同一级别终止

来自分类Dev

找出BST的叶子是否在同一级别终止

来自分类Dev

R检查数据表值是否处于同一级别

来自分类Dev

Docker:与其他容器处于同一级别的nginx容器-是否足够?

来自分类Dev

JPA和一级缓存,有什么意义?

来自分类Dev

JPA和一级缓存,有什么意义?

来自分类Dev

最终,非同步读取(与同步写入结合)是否一致

来自分类Dev

是否可以迭代地将另一级别的键添加到字典以生成嵌套字典?

来自分类Dev

是否可以在doxygen中与主/索引页面处于同一级别的两个链接

来自分类Dev

是否可以使用认知同步将移动本地数据与一个中央动力发电机同步?

来自分类Dev

在Java 8 Stream并行处理期间,所有处理器核心的缓存是否同步?

来自分类Dev

在一级缓存中获得Haswell的峰值带宽:仅获得62%

来自分类Dev

Hibernate 的一级缓存不适用于布尔类型?

来自分类Dev

一个线程是否与具有相同 id 的前一个线程同步?

来自分类Dev

删除一级块

来自分类Dev

RewriteRule提升一级

来自分类Dev

删除一级块

来自分类Dev

$(pwd) - 上一级

来自分类Dev

是否可以使用易失性变量来实现一致的只写同步?

来自分类Dev

如果所有键都是唯一的,地图的投放是否需要同步?

来自分类Dev

如果与同步功能一起使用,是否会延迟UI?

来自分类Dev

是否可以创建一个自定义组件加载器以同步注入组件?

Related 相关文章

  1. 1

    休眠一级缓存与查询缓存

  2. 2

    休眠一级缓存与查询缓存

  3. 3

    PHP:检查数组元素是否存在跳过一级

  4. 4

    转换后备缓冲区(TLB)与向CPU的L1高速缓存是否处于同一级别?那么,我可以将虚拟地址转换与L1缓存访问重叠吗?

  5. 5

    休眠:是否可以将瞬态字段保存在二级缓存中?

  6. 6

    休眠:是否可以将瞬态字段保存在二级缓存中?

  7. 7

    是否可以从平面文件加载数据并转储到休眠二级缓存中?

  8. 8

    找出BST的叶子是否在同一级别终止

  9. 9

    找出BST的叶子是否在同一级别终止

  10. 10

    R检查数据表值是否处于同一级别

  11. 11

    Docker:与其他容器处于同一级别的nginx容器-是否足够?

  12. 12

    JPA和一级缓存,有什么意义?

  13. 13

    JPA和一级缓存,有什么意义?

  14. 14

    最终,非同步读取(与同步写入结合)是否一致

  15. 15

    是否可以迭代地将另一级别的键添加到字典以生成嵌套字典?

  16. 16

    是否可以在doxygen中与主/索引页面处于同一级别的两个链接

  17. 17

    是否可以使用认知同步将移动本地数据与一个中央动力发电机同步?

  18. 18

    在Java 8 Stream并行处理期间,所有处理器核心的缓存是否同步?

  19. 19

    在一级缓存中获得Haswell的峰值带宽:仅获得62%

  20. 20

    Hibernate 的一级缓存不适用于布尔类型?

  21. 21

    一个线程是否与具有相同 id 的前一个线程同步?

  22. 22

    删除一级块

  23. 23

    RewriteRule提升一级

  24. 24

    删除一级块

  25. 25

    $(pwd) - 上一级

  26. 26

    是否可以使用易失性变量来实现一致的只写同步?

  27. 27

    如果所有键都是唯一的,地图的投放是否需要同步?

  28. 28

    如果与同步功能一起使用,是否会延迟UI?

  29. 29

    是否可以创建一个自定义组件加载器以同步注入组件?

热门标签

归档