什么是 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简单使用
简述 JPA 与 Spring Data JPA 与 Hibernate
Spring data jpa JavassistLazyInitializer 不仅是Json序列化问题.以及解决办法