当前位置: 首页 > 面试题库 >

休眠缓存(例如EHCache)是否可以使用jpa特定代码(如果我使用EntityManager / EM Factory而不是Session / SessionFactory)?

郎经纶
2023-03-14
问题内容

我有非常简单的查询。我想确保我没有任何困惑。我在规范中看到,缓存不是规范的一部分,而是根据特定的orm工具提供商提供的。我在应用程序中使用Hibernate作为ORM工具。但是要独立于供应商,我使用的是JPA(javax.persistence)的所有内容(注释,类等),而不是Hibernate专门提供的任何内容。我使用EntityManagerEntityManagerFactory而不是SessionFactorySession。我的查询是,在博客中,我看到Session间接地处理了Hibernate提供的缓存提供程序和缓存机制。那么有可能EntityManager还将能够用于缓存提供程序和缓存配置,因此指定为可缓存的实体和查询将能够使用缓存功能?(我认为应该这样)。还有JPA提供的任何api(例如Hibernate提供的Statistics
api)来测量和查看缓存统计信息吗?请在这方面帮助我。


问题答案:

是的,它将正常工作。如果您看一下代码,则将其EntityManagerImpl委托给SessionImpl,因此所有操作都将与纯hibernate一起工作。另请查看有关JPA
2.0中的缓存的本文



 类似资料:
  • 问题内容: 我是JPA的新手。 根据我的理解,JPA是规范,Hibernate实现JPA并提供附加功能以及JPA方法。 但是我正在阅读JPA教程,其中使用对象可以对数据执行CRUD,而无需使用Hibernate库! 所以任何人都可以让我知道 是否可以单独使用JPA 而不使用Hibernate 来使用方法? 请提及一些有用的链接或示例。 非常感谢您的回应。 谢谢。 问题答案: 您是正确的JPA是规范

  • 问题内容: 对于此问题,我们希望避免编写特殊查询,因为该查询在多个数据库中必须有所不同。仅希望使用休眠条件,我们希望能够转义特殊字符。 这种情况是需要转义特殊字符的原因: 假设我们在数据库中有表’foo’。表’foo’仅包含1个字段,称为’name’。“名称”字段可以包含在数据库中可能被认为是特殊字符。此名称的两个示例是“ name_1”和“ name%1”。至少在Oracle中,“ _”和“%”

  • 问题内容: 我知道一个事实,它是 Hibernate 使用的一级缓存,一旦我们从中检索到一个实体,就会从而不是从DB中获取对具有 相同标识符 的 同一实体 的后续get调用,直到is Open 为止。 话虽如此,我对休眠如何将第一级缓存与数据库同步感到怀疑吗?考虑以下情形 所以我的问题是 由于是从一级缓存中提取的,因此有更新的值吗? 如果在会话打开时有人直接更新DB并修改User对象,那么是否与D

  • 问题内容: 在我的Spring驱动的应用程序中,我使用Hibernate(4.2.15.Final)和EhCache(2.6.9)作为第二级缓存,在标准的持久层中进行了设置。 一切正常。但是,将条目放入第二级缓存有时会花费一些时间。 我已经在一个显式文件中配置了域模型类的缓存(我没有配置默认缓存): 在持久性上下文启动时,我收到以下INFO消息记录: 以及执行期间的以下警告 AFAIK 必须调整放

  • 问题内容: 我需要在应用程序中使用实体框架,并且在Oracle数据库中使用了表分区。使用简单的JDBC,我可以从特定分区中选择数据。但是我不知道我是否可以使用hibernate或Eclipse链接(JPA)进行相同操作。如果有人知道该怎么做,请告诉我。 通常是JDBC-SQL中的select语句, 如何使用Hibernates或JPA进行同样的操作? 请至少分享一个学习资源的链接。 谢谢!!! 问

  • 问题内容: 我可以设置JPA /hibernate将类型持久化为吗?在数据库中(该列定义为。当前将其存储为。数据库为Oracle。 问题答案: 我弄清楚如何执行此操作的唯一方法是为类提供两个属性。一个作为编程API的布尔值,不包含在映射中。它的getter和setter引用一个私有字符变量Y / N。然后,我有另一个受保护的属性,它包含在hibernate映射中,它的getter和setter直接