Hibernate 架构分析
首先看一下 Hibernate 5.2 版本中,官方提供的架构图。
从架构图上,我们可以知道 Hiberante 实现的 ORM 的接口有两种,一种是 Hiberante 自己的 API 接口;一种是 Java Persistence API 的接口实现。
因为 Hibernate 其实是比 Java Persistence API 早几年发展的,后来才有了 Java 的持久化协议。以我个人的观点来看,随着时间的推移,Hiberante 的实现逻辑可能会逐渐被弱化,由 Java Persistence API 统一对外提供服务。
那么有了这个基础,我们研究 Hibernate 在 Spring Data JPA 里面的作用,得出的结论就是:Hibernate 5.2 是 Spring Data JPA 持久化操作的核心。我们再从类上面具体看一下,关键类的图如下所示:
结合类的关系图来看,Session 接口和 SessionFactory 接口都是 Hibernate 的概念,而 EntityManger 和 EntityManagerFactory 都是 Java Persistence API 协议规定的接口。
不过 HibernateEntityManger 从 Hibernate 5.2 之后就开始不推荐使用了,而是建议直接使用 EntityManager 接口即可。那么我们看看 Hibernate 在 Spring BOOT 里面是如何被加载进去的。