【问题标题】:What is difference between spring boot JPA and HibernateSpring Boot JPA 和 Hibernate 有什么区别
【发布时间】:2018-06-02 12:24:23
【问题描述】:
想知道Spring boot JPA是如何使用hibernate的,请问Spring boot JPA和hibernate有什么关系吗?
当我们使用boot jpa时,我们简单地实现了org.springframework.data.jpa.repository.JpaRepository接口,可以使用与列名匹配的函数名编写查询,也可以编写自定义查询,那么hibernate在这里的作用是什么?又怎么能说hibernate是spring boot中JPA的实现呢?
【问题讨论】:
标签:
hibernate
spring-boot
【解决方案1】:
- Spring Data JPA 是 Spring 对 JPA (Java Persistence API) 的抽象,具有更易于使用的方法以及 JPA 规范中定义的默认值
- Hibernate 在另一种情况下是 JPA 实现(JPA 提供者)。
Spring Data 不能单独存在,需要一个或另一个 JPA Provider 来实现方法。出于这个原因,Spring Data JPA 可以与任何 JPA 提供程序一起使用,但默认情况下会自动配置为 Hibernate。
因此,Spring-data 中用于实体管理和查询提交等的所有 ORM 功能仍在使用 Hibernate 实现。
存储库只允许您动态编写查询,这些查询再次转换为基于数据源提供程序和默认休眠 SQL 方言的基本查询。
您还可以通过项目中的配置将 Spring-Data 与其他 JPA 提供程序(例如(Toplink、OpenJPA、Eclipselink)一起使用。
【解决方案2】:
JPA 是一个规范,它需要一个实现才能使用,你不能自己使用 JPA。 Hibernate 是流行的 JPA 提供程序之一,因此它是 JPA 的一种实现。 Spring Data 的目标是减少为各种持久性存储和 GenericDao 实现实现数据访问层所需的样板代码量。 Spring Boot 是一个创建微服务的框架。如果您使用 Spring 作为框架,那么 Hibernate、JPA 和 Spring Data 的组合将是与数据库通信的最佳选择。