大家好,我是yes。
国庆假期要没啦,明天最后一天了,要开始收收心啦~
今天讲讲一个初学者(可能包括一些老手)都没去搞懂的几个概念:Hibernate、JPA、Spring Data JPA 之间的关联。
嘿嘿,前段时间有位同学说去大厂面试被问了这个。
好了,话不多说,发车!
HibernateHibernate 就不多介绍了, 一个 ORM 框架,它提供了 HQL 来屏蔽底层不同数据库厂商 SQL 之间的差异,大大提升了程序的可移植性。
也提供了一套 Criteria API 来进行数据操作,使用这套 API 不需要关注底层 SQL 的实现,直接操作 API 即可。
JPAJPA 是一个 Java 持久化规范,在 JDK 5 后提出的。
它的提出主要是为了整合市面上已有的 ORM 框架,如 Hibernate、Eclipselink 等。
官方觉得:你们搞框架可以,但是得按照我 Java 定的规矩来。
只有统一了接口,我们程序员使用的时候才会便捷。 但它只是一个规范,具体实现还是由这些 ORM 框架来完成。
所以 JPA 的提出是为了屏蔽市面上各大 ORM 框架的差异,便于开发人员的使用。
Spring Data JPA:虽然市面上很多 ORM 框架都实现了 JPA 规范,但它们基于 JPA 基础又做了一些扩展,这使得使用 JPA 的时候不能无缝切换底层的 ORM 框架。
所以 Spring 又提出了 Spring Data JPA 。
Spring Data JPA 符合 JPA 规范,但它是一个抽象层,上接 JPA 下接各大 ORM 框架,简化了持久层开发且屏蔽了各大 ORM 框架的差异,两个字,舒服。
总结JPA 是规范,统一了规范才便于使用。
Hibernate 是 ORM 框架,它是 JPA 这个规范的一个实现。
Spring Data JPA 则是 Spring 提出的,因为不同的 ORM 框架虽说有 JPA 规范约束,但是还是有不同的扩展,不易无缝替换,所以基于 JPA 添加了一个抽象层,来屏蔽不同 ORM 框架的差距。
这其实类似于 Spring 自己定义一个标准来统一 Spring 对持久层的支持,这样对于我们这些在 Spring 使用 ORM 框架的开发来说,不需要管底层 ORM 怎么变了。
我是yes,从一点点到亿点点,我们下篇见!可以点击名片关注我解锁更多文章!



