让我们首先了解 JPA , Hibernate 和 Spring Data JPA 的定义,这样就可以很容易地讨论Hibernate和Spring Data JPA之间的区别。
什么是Java Persistence API?
Java Persistence API提供了一个规范,用于将数据从Java对象持久化,读取和管理到数据库中的关系表。
什么是Hibernate框架?
Hibernate是Java环境的对象关系映射解决方案。对象关系映射或ORM是将应用程序域模型对象映射到关系数据库表的编程技术。Hibernate是一个基于Java的ORM工具,它提供了一个框架,用于将应用程序域对象映射到关系数据库表,反之亦然。
Hibernate提供了Java Persistence API的参考实现,使其成为具有松散耦合优势的ORM工具的绝佳选择。
JPA是一个规范,Hibernate是一个JPA提供者或实现。
什么是Spring Data JPA?
Spring Data是 Spring Framework 的一部分 。Spring Data存储库抽象的目标是显着减少为各种持久性存储实现数据访问层所需的样板代码量。
Spring Data JPA不是JPA提供者。它是一个库/框架,它在我们的JPA提供程序(如Hibernate)的顶部添加了一个额外的抽象层。
现在,您熟悉JPA,Hibernate和Spring Data JPA的定义。现在,让我们讨论Hibernate和Spring Data JPA之间的区别。
Hibernate和Spring Data JPA有什么区别?
Hibernate是一个JPA实现,而Spring Data JPA是一个JPA数据访问抽象。Spring Data提供了GenericDao 自定义实现的解决方案 。它还可以通过方法名称约定代表您生成JPA查询。
使用Spring Data,您可以使用Hibernate,Eclipse Link或任何其他JPA提供程序。一个非常有趣的好处是 您可以使用@Transactional注释以声明方式控制事务边界 。
Spring Data JPA不是一个实现或JPA提供程序,它只是一个抽象,用于显着减少为各种持久性存储实现数据访问层所需的样板代码量。
Hibernate提供了Java Persistence API的参考实现,使其成为具有松散耦合优势的ORM工具的绝佳选择。
请记住,Spring Data JPA始终需要JPA提供程序,如 Hibernate 或Eclipse Link。