当前位置: 首页 > 知识库问答 >
问题:

第二级Hibernate缓存-使对象在会话工厂级别可用?

盖夕
2023-03-14

我对hibernate中如何使用第一级和第二级缓存有一些了解。与此相关的问题很多-是的,我同意

但我的困惑是。在第一级缓存中,除非我提交事务,否则我的数据不会持久化到db中,因此其他会话在此之前不会知道这些更改。如果二级缓存将实体带到会话工厂级别!这是否意味着即使在我提交事务之前,我在一个会话中的更改也可以被其他会话使用??

使用二级缓存时何时更新到dB??在第一次,它将在结束事务时发生

我引用了很多关于这个话题的讨论,但我没有找到确切的答案!!

共有1个答案

柴丰
2023-03-14

在您提交事务之前,您的更新绝对不会与其他会话共享。如果发生这样的事情,那就是一个严重的错误。

有或没有2LC的DB提交没有区别,除了2LC可能会在DB完全提交之前使事务失败这一事实。JPA和Hibernate的非JPA事务都执行2阶段提交,其中首先通知所有资源正在提交事务,获取一些锁等,如果所有资源成功,则更改将被持久化/发布。

事务性缓存与常规数据库没有太大区别:它假装已经应用了更改,但对其他事务隐藏了更改;这称为多版本并发控制(MVCC)。

 类似资料:
  • 问题内容: 我想在hibernate项目中使用二级缓存,但是我只对hibernate二级缓存了解一点,任何人都可以解释我应该如何在代码中使用它以及需要什么配置和.jar文件吗?我将这些设置设置为我的hibernate.cfg.xml文件 并添加这些jar文件, 我想知道我是否需要更改其他配置? 我怎么知道我的项目使用二级缓存? 如果只是设置此设置,hibernate将自动使用此设置,否则我必须在我

  • 本文向大家介绍Hibernate中一级缓存和二级缓存之间的区别,包括了Hibernate中一级缓存和二级缓存之间的区别的使用技巧和注意事项,需要的朋友参考一下 Hibernate支持两种类型的缓存,一种是第一级缓存,另一种是第二级缓存。  一级缓存是会话级缓存,它始终与会话级对象关联。这种类型的缓存用于通过缓存对象的状态来最小化Db交互。 那不是在事务中完成每次修改之后更新,而是仅在事务结束时更新

  • 我想澄清一些关于hibernate二级缓存的问题。需要澄清的一点是,HQL查询是否总是会击中数据库(至少对于获取id)。 假设我们有实体 地址的数据库表有一个对客户(id)的外键引用,以支持一对多关系。 作为前提条件,我已将hibernate的2级缓存启用为EHcache。只有实体和关联被设置为可缓存。未启用查询缓存。 我知道如果我使用这个会话。get()或会话。load()多次,只有第一次调用才

  • 问题内容: 谁能用简单的语言解释一下Hibernate中的一级和二级缓存是什么? 问题答案: 1.1)一级缓存 一级缓存 始终与 Session对象 关联。Hibernate默认使用此缓存。在这里,它处理一个事务接一个另一个事务,意味着不会多次处理一个事务。主要是它减少了在给定事务中需要生成的SQL查询的数量。那不是在事务中完成每次修改之后更新,而是仅在事务结束时更新事务。 1.2)二级缓存 二级

  • 问题内容: 我正在开发hibernate+ ehcache程序。 ehcache.xml 我在bean.xml中提到了ehcache 我在dao类中的调用方法是 输出为: 但是它在数据库中命中了两次。我在代码中没有发现任何错误。请向我建议为什么它在数据库中命中了两次。 问题答案: 我已经解决了我的问题。我需要添加 在域类中。

  • 问题内容: 在工作面试中,一名招聘人员问我“休眠状态中有多少个缓存级别?”。 所以我描述了1级和2级。 他说的是正确的,但也有一个三级缓存,例如,缓存某些不经常更改的表的结果,例如“ CURRENCY”或“ COUNTRY”,然后每隔“ 12/24 /您想要什么时间”重新加载这些表。 我搜索了一下,但是什么也没找到。那么,实际上是否存在第三级缓存还是仅仅是某种功能,如果是,该功能的名称是什么,我该