spring boot JPA和Hibernate之间有什么区别

时间:2018-06-02 12:24:24

标签: hibernate spring-boot

我想知道Spring引导JPA如何使用hibernate,Spring引导JPA和hibernate之间有什么关系吗? 当我们使用boot jpa时,我们只需实现org.springframework.data.jpa.repository.JpaRepository接口,并且可以使用与列名匹配的函数名来编写查询或者可以编写自定义查询,那么hibernate在这里的作用是什么?我们怎么能说hibernate是Spring引导中JPA的实现?

2 个答案:

答案 0 :(得分:3)

  • Spring Data JPA是JPA(Java Persistence API)的Spring抽象,具有更易于使用的方法以及JPA规范中定义的默认值
  • 另一种情况下,Hibernate是JPA实现(JPA提供商)。

Spring Data本身不存在,需要一个或另一个JPA Provider来实现这些方法。因此,Spring Data JPA可以与任何JPA提供程序一起使用,但默认情况下会自动配置Hibernate。

因此,Spring-data中用于实体管理和查询提交等的所有ORM功能仍在使用Hibernate实现。 存储库只允许您动态编写查询,然后再根据数据源提供程序和默认的hibernate SQL Dialect转换为基本查询。

您还可以将Spring-Data与其他JPA提供商(如Toplink,OpenJPA,Eclipselink)一起使用,并在项目中进行配置。

答案 1 :(得分:0)

JPA是一个规范,它需要一个实现才能使用,您不能自己使用JPA。 Hibernate是流行的JPA提供程序之一,因此它是JPA的实现。 Spring Data的目标是减少实现各种持久性存储和GenericDao实现的数据访问层所需的样板代码数量。 Spring Boot是创建微服务的框架。如果将Spring用作框架,则Hibernate,JPA和Spring Data的组合将是与数据库进行通信的最佳选择。