JPA 的 EntityManager 和 Hibernate 的 First Level Cache 有什么区别?



最近我在一家公司接受了一次F对F的面试。采访者刚刚问了我以下问题:

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

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

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

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

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

实体经理

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

最新更新