【问题标题】:What are the difference between JPA's EntityManager and Hibernate's First level caching?JPA 的 EntityManager 和 Hibernate 的一级缓存有什么区别?
【发布时间】:2014-10-01 01:52:51
【问题描述】:

最近我在一家公司面临一次 F-to-F 面试。 面试官刚刚问了我以下问题:

JPA 的 EntityManager 和 Hibernate 的一级缓存有什么区别? 请举例说明。

【问题讨论】:

  • 那你是怎么回答的?
  • 我只是定义了第一级缓存和实体管理器。但他又问我有什么不同?我无法告诉他区别...... @ScaryWombat
  • 这意味着两个术语相同? @Desorder

标签: java hibernate jpa


【解决方案1】:

Hibernate 本身通过建立在 Hibernate Core 库之上的 Hibernate Annotations 和 Hibernate EntityManager 库(或风味)实现了 JPA。 Hibernate EntityManager 是 JPA 的完整实现,它遵循 JPA 生命周期

JPA 就像一个由其他 ORM 实现的接口,这些 ORM 充当了这个的供应商。 所以,没有区别的问题...... 要了解更多信息,您可以通过此链接。

https://blogs.oracle.com/carolmcdonald/entry/jpa_caching

【讨论】:

  • 表示两者相同。但是技术会发生变化。
  • 一个就像一个接口,另一个是它的实现...JPA 在休眠中运行
  • 好的。明白了很多。
  • 不,它们不一样。即使您可以在没有 Hibernate 的情况下拥有 JPA。 Hibernate 只是众多 JPA 实现中的一种。命名其他,OpenJPA、EclipseLink 和其他。
【解决方案2】:

实际上很难指出这两者之间的区别,因为这就像询问香蕉和苹果之间的区别一样。这是两者的定义。

实体管理器

EntityManager API 用于访问特定工作单元中的数据库。它用于创建和删除持久实体实例,通过主键标识查找实体,以及查询所有实体。这个接口类似于Hibernate中的Session。

来自http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/architecture.html

一级休眠缓存

它是附加到 Hibernate 会话以加快数据检索的缓存工具。

这是一篇很好的文章,涵盖了一些基本方面。 http://howtodoinjava.com/2013/07/01/understanding-hibernate-first-level-cache-with-example/

因此,我将列出一些不同之处:

  • 实体管理器是 JPA 规范(因此是整个 Java EE 平台的标准)的一部分,用于通过托管实体执行数据库访问。
  • Hibernate 一级缓存是一种缓存工具,用于返回缓存的休眠实体(请注意粗体,因为休眠实体可能不是相同的 JPA 实体)。

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 2011-08-06
    • 2023-03-08
    • 2015-03-11
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多