大家好,我是。国庆长假即将结束,明天就是最后一天了,开始静下心来吧~今天讲几个初学者(可能有些老手)可能不明白的概念:Hibernate、JPA、和SpringDataJPA。哎,前段时间有个同学说去大厂面试的时候被问到这个问题。好了,废话不多说,开始吧!HibernateHibernate就不多介绍了。它是一个ORM框架,提供了HQL来屏蔽不同数据库厂商底层SQL的差异,大大提高了程序的可移植性。还提供了一组CriteriaAPI用于数据操作。使用这套API无需关注底层SQL的实现,直接操作API即可。JPAJPA是JDK5之后提出的Java持久化规范,提出来主要是为了整合市面上现有的ORM框架,比如Hibernate、EclipseLink等。官方认为:你可以搭建一个框架,但是你必须遵循我的爪哇只有接口统一了,才会方便我们程序员使用。但它只是一个规范,具体的实现还是由这些ORM框架来完成。所以JPA的提出就是为了屏蔽市面上各大ORM框架的差异,方便开发者的使用。SpringDataJPA:虽然市面上很多ORM框架都实现了JPA规范,但是在JPA基础上做了一些扩展,导致在使用JPA时无法无缝切换底层ORM框架。于是Spring又提出了SpringDataJPA。SpringDataJPA符合JPA规范,但它是一个抽象层,连接JPA和连接各大ORM框架,简化了持久层的开发,屏蔽了各大ORM框架的差异。两个字,舒服。总结JPA是一个规范,规范统一了就很好用。Hibernate是一个ORM框架,它是JPA规范的一个实现。SpringDataJPA是由Spring提出的。不同的ORM框架虽然有JPA规范的约束,但仍然有不同的扩展,不易无缝替换。因此在JPA的基础上增加了一个抽象层来屏蔽不同ORM框架之间的差距。这其实类似于Spring定义了一个标准来统一Spring对持久层的支持,这样对于我们这些在Spring中使用ORM框架的人来说,就不用担心底层的ORM发生了怎样的变化。
