You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data、Spring Data JPA与Hibernate的关系及隐式依赖疑问

为什么项目中会出现Hibernate?

你引入的spring-boot-starter-data-jpa是Spring Boot提供的一站式starter依赖,它会自动帮你引入JPA规范的默认实现——Hibernate。Spring Boot的starter设计就是为了简化配置,默认提供开箱即用的技术栈,不需要你手动添加Hibernate依赖,它已经被包含在starter的依赖树中了。

Spring Data JPA、JPA、Hibernate三者的关系
  • JPA(Java Persistence API):这是Java官方定义的持久化规范,仅包含一组接口、注解(如@Entity、@Query)和规则,本身没有具体实现。它的作用是让开发者用统一的API操作不同ORM框架,避免绑定到某一个具体实现。
  • Hibernate:是JPA规范的主流具体实现框架,完全实现了JPA的所有接口和规范,同时还提供了很多JPA之外的扩展功能。除Hibernate外,EclipseLink等也是JPA实现,但Spring Boot默认选择Hibernate作为spring-boot-starter-data-jpa的底层实现。
  • Spring Data JPA:是Spring框架在JPA之上的封装,进一步简化JPA的使用。比如你定义的UserJPARepository extends JpaRepository,Spring Data JPA会在运行时自动生成该接口的实现类,无需手动编写SQL或JPA实体管理器代码;它还支持通过方法名自动生成查询、自定义@Query等功能,底层实际的数据库操作依然由Hibernate这样的JPA实现来执行。

你用@Query编写的查询语句出现语法错误时,Hibernate作为底层执行器负责解析和执行查询,所以会抛出Hibernate的异常,这是完全正常的。

内容的提问来源于stack exchange,提问作者Nadezhda Zholtikova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:29:54