什么是 spring data jpa 以及它使用哪个 orm 框架?

Posted

技术标签:

【中文标题】什么是 spring data jpa 以及它使用哪个 orm 框架?【英文标题】:What is spring data jpa and which orm framework does it use? 【发布时间】:2019-10-14 19:19:11 【问题描述】:

我正在做一个不使用 Hibernate 的项目,但我有疑问。它使用哪个orm框架,请提前告诉我。

【问题讨论】:

它肯定支持hibernate和eclipselink。其他我不确定 【参考方案1】:

JPA 是规范,而不是实现。所以只有 JPA 不起作用。 也许您的项目正在使用 spring-data-jpa。 spring-data-jpa 依赖休眠。

https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa/2.2.0.RELEASE

【讨论】:

【参考方案2】:

JPA 是一个规范,有几种实现方式(Hibernate、EclipseLink、...)。

Spring Data JPA 是一个框架,它可以使用一个实现或另一个实现。

如果你的项目没有使用休眠,它可能使用了 EclipseLink,你可以在你的 pom.xml 中找到它。如果您看到 Hibernate 排除:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

和 EclipseLink 依赖:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa</artifactId>
    <version>2.x.x</version>
</dependency>

它确认您正在使用 EclipseLink。

来源:https://www.baeldung.com/spring-eclipselink

【讨论】:

我有一个疑问。我有一个一对一和一对多的映射,那么这个 spring data jpa 或 hibernate orm 谁来做?此处的示例代码:@ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn(name = "post_id", nullable = false) @OnDelete(action = OnDeleteAction.CASCADE) @JsonIgnore private Post post; 映射是由谁 spring data jpa 或 hibernate 完成的? 映射由 JPA 实现完成,即 Hibernate 或 EclipseLink 映射由您或项目开发者完成。您用于执行此映射的注释来自您可以在“导入”部分中检查的包。这些大多是标准的 JPA 注释,但您可以混合一些特定的 hibernate 或 eclipselink 注释来获得一些特性。 谁有 ORM spring data JPA 或 spring data JPA 只给出注释,即:@Entity?

以上是关于什么是 spring data jpa 以及它使用哪个 orm 框架?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot with Spring-Data-JPA学习案例

Spring_data_jpa以及Hibernate简单使用

SpringBoot整合Spring Data JPA

spring data jpa 的分页以及条件查询

简述 JPA 与 Spring Data JPA 与 Hibernate

Spring data jpa JavassistLazyInitializer 不仅是Json序列化问题.以及解决办法