问题标签 [first-level-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1281 浏览

caching - JPA中一级和二级缓存的配置

我已阅读以下几页,但我有几个疑问。

关于 1 级缓存的持久化上下文类型 Transaction-scoped Persistence context 和 Extended Persistence context 有什么区别?

关于二级缓存 http://www.objectdb.com/java/jpa/persistence/cache

现在,我的问题是:

  1. 在正常情况下,为 L1 缓存、TRANSACTION 或 EXTENDED 选择的最佳PersistenceContextType是什么?我想答案是 TRANSACTION,因为它是默认值。但是我想知道什么时候应该使用 EXTENDED。
  2. 在正常情况下,为 L2 缓存的以下属性选择的最佳值是什么?:
    • javax.persistence.sharedCache.mode(我想答案是全部,因为它是默认值并缓存所有实体)
    • javax.persistence.cache.retrieveMode(我想答案是使用,因为它是默认设置并在检索时使用缓存)
    • javax.persistence.cache.storeMode(我想答案是 USE 因为它是默认值,但是我仍然不明白与 REFRESH 的区别,这对我来说似乎更好)

有人可以解释如何正确放置 L1 和 L2 的这些属性,并解释何时使用某些值或其他值吗?

0 投票
3 回答
138 浏览

second-level-cache - 休眠缓存

在休眠中,一级缓存已经可以用于缓存,那么为什么我们必须使用二级缓存呢?而不是二级缓存,为什么我们不能在休眠中只使用一级缓存进行缓存?

0 投票
1 回答
538 浏览

c# - NHibernate 一级缓存

上下文:我正在开发一个 .NET 3.5 Windows 应用程序,一旦 RAM 被 NHibernate 一级缓存完全填满,该应用程序就会崩溃。

问题 1:NHibernate 的 1 级缓存算法是否会执行内存检查以确保存在足够的空间?

问题2:使用Evict方法时,以下伪代码步骤是否正确?

1 - session.Query

2 - 保存查询结果

3 - session.Evict

4 - 返回保存的结果

更新

在应用程序开始时创建会话并且仅在应用程序结束时才释放会话的上下文中,我希望控制 NHibernate 的一级缓存大小。NHibernate 文档详细解释了缓存的工作原理以及如何管理它,但没有提及缓存大小,这在我的情况下是一个问题。

问题3:是否可以知道会话的缓存大小(如果需要,随后清除它)?或者,是否可以对 Nhibernate 可以在应用程序范围内使用的缓存大小设置限制?

0 投票
0 回答
1473 浏览

java - 查询何时命中 JPA 一级缓存以及查询何时绕过缓存

很明显,默认情况下,当我们执行时entityManager.find(Post.class, 1L);Post实例id=1将被检索并放置在一级缓存中,然后如果我们entityManager.find(Post.class, 1L);在同一个事务中再次执行相同的操作,则 post 实例将直接从一级缓存中返回而无需查询数据库。

我的问题如下:

entityManager.find(...);仅当我们尝试通过 id 执行方法获取实体时才检查一级缓存吗?我的意思是如果我们通过 ID 以外的不同属性获取相同的Post实例(具有),例如使用 Criteria 查询按名称获取帖子?id = 1它仍然要检查一级缓存吗?

native query用,jpql或查询同一行怎么样spring data query method?JPA/Hibernate 是否解析native queryjpql查询以查明一级缓存中是否存在相应的实体?

0 投票
1 回答
22 浏览

hibernate - 二级休眠缓存 - 使对象在会话工厂级别可用?

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

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

使用二级缓存时何时会更新 dB?第一,它会在结束交易时发生

我在这个主题中提到了很多讨论,但我没有找到确切的答案!

0 投票
2 回答
1489 浏览

java - Hibernate 一级缓存丢失

我是 JPA/Hibernate 一级缓存的新手。

我有以下存储库类

每次我调用 findByState 方法(在同一个事务中),我看到休眠 sql 查询被输出到控制台

我希望结果被一级缓存缓存,不会重复查询数据库。

我究竟做错了什么?

0 投票
1 回答
42 浏览

java - 所有代码都在同一会话中的 mvc 控制器方法中运行吗?

我有以下模型:

Foo实体和之间的多对多Bar。Foo 有一个用Bar注释的 LinkedHashSet @OrderBy

Controller 包含一个方法,该方法首先将一个新 Bar 保存到集合中,然后从一个 Foo 中获取所有 Bar。

服务方式:

问题是,在调用该方法时,除了最后一个引入的 Bars 之外,所有 Bars 都是有序的。我认为它与休眠一级缓存有关,但我不确定与该方法关联的会话何时开始或结束。

来自该控制器方法的两个会话方法是否在同一个会话中运行?

0 投票
0 回答
111 浏览

caching - 为什么一级使用拆分缓存?

一般来说,处理器遵循的是一级缓存是分裂的,二级缓存是统一缓存。为什么会这样?我不知道在过去 15 年中设计的具有统一 (L1) 缓存的任何处理器。

0 投票
0 回答
22 浏览

spring-boot - spring boot hibernate缓存相关查询

我已经开始学习 Spring Boot Hibernate 缓存并且很少有与它们相关的查询。

  1. 我已经使用以下步骤实现了休眠 1 级缓存,效果很好。
  • 添加依赖项 - spring-boot-starter-cache
  • 在 Spring Boot 应用程序类中添加了 @EnableCaching 注解
  • 在服务类中的方法上添加了 @Cacheable(value="StudentInfo") 注释。

为了为所有方法实现缓存,我是否需要在所有方法上手动添加 @Cacheable 注释,或者有没有办法为所有方法全局启用缓存。

  1. 我的 Spring Boot 应用程序正在使用使用 Spring Security 的 jwt 无状态身份验证机制。由于没有维护会话,在我的场景中使用休眠二级缓存有什么好处。

谢谢。

0 投票
0 回答
8 浏览

spring-data-jpa - JPA 一级缓存及其填充时

使用 Spring 数据 JPA 并读取它Hibernate first level cache is missing,答案是“ Hibernate 默认情况下不缓存查询和查询结果。唯一使用一级缓存的是当你调用 EntityManger.find() 你会看不到 SQL 查询正在执行。如果实体已经在加载,则使用缓存来避免创建对象。

  1. 因此,如果如果不是通过其 Id 而是其他条件获取实体,如果我更新某些属性,我不应该在事务方法中看到更新 sql,因为它没有存储在第一级缓存中,对吗?
  2. 根据上面的答案,如果我得到一些实体列表,无论我使用什么标准来查找它们,它们都不会存储在一级缓存中,对吧?
  3. 当一个 Transactional(propagation= Propagation.NEVER) 方法通过它的 id 加载同一个实体两次时,不应该假设它会两次访问数据库,因为每次加载都将在它自己的“事务”中运行并且会有自己的持久上下文?在这种情况下,预期的行为是什么?

谢谢