JPA的EntityManager和Hibernate的一级缓存有什么区别?

时间:2014-10-01 01:52:51

标签: java hibernate jpa

最近我在一家公司接受了F-to-F的采访。 采访者刚刚问我以下问题:

  

JPA的EntityManager和Hibernate的第一级缓存有什么区别?   请用合适的例子说明。

2 个答案:

答案 0 :(得分:2)

Hibernate本身通过Hibernate Annotations和Hibernate EntityManager库(或者flavor)实现了JPA,这些库是基于Hibernate Core库构建的。 Hibernate EntityManager是JPA的完整实现,它遵循JPA生命周期

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

<强> https://blogs.oracle.com/carolmcdonald/entry/jpa_caching

答案 1 :(得分:1)

实际上很难指出这两者之间的差异,因为它与询问香蕉和苹果之间的差异是一样的。以下是两者的定义。

实体经理

  

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

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

第一级Hibernate缓存

  

它是附加到Hibernate会话的缓存工具,可加快数据检索速度。

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

所以,我会列出一些差异:

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