Spring Data JPA 是 JPA 实现吗?

Is Spring Data JPA a JPA implementation?

我正在尝试 "really" 理解 Spring 框架。我对 Spring Core (DI) 和 Spring MVC 有一定的了解。

对于数据部分,我现在专注于 Spring Data JPA。据我了解,JPA是一个标准规范,有多种实现,Hibernate是著名的。

现在,当我开始 Spring Data JPA 时,我的印象是 Spring Data JPA 是 JPA 规范的独立实现。原来我错了

如果我没理解错的话,Spring Data JPA 是 Spring 提供的抽象层,它在内部使用其他 JPA 提供程序(Example Hibernate),因此通常是这样的:

Application ---> Spring Data JPA --> Hiberate --> JDBC ----> DB

我的理解对吗?如果是这样,Spring Data JPA 不是误导吗?它本身不是 JPA 提供程序,它只是一个抽象层,在其他 JPA provider.

之上工作

我不确定我是否真正了解Spring框架,或者它是一个复杂的框架?

谁能帮我理解一下?

我不认为它的名字有误(免责声明:我是项目负责人)。所有 Spring 数据项目都列出了商店或 API 它们 基于 的名称。 Spring Data JPA 基本上是 Spring Data for JPA,就像 Spring Data MongoDB 是 Spring Data forMongoDB,就像Spring批处理是Springfor批处理应用,Spring集成是Spring 个集成项目。

请更正 JPA 的依赖关系图:

Application -> Spring Data JPA -> JPA <- Hibernate -> JDBC -> DataSource

-> — uses
<- — implements

MongoDB也一样:

Application -> Spring Data MongoDB -> MongoDB Java driver -> MongoDB

等我仍然感兴趣的是,您到底在哪里得到的印象是 Spring Data JPA 是 JPA 的一个实现,而不是 project page nor the reference documentation state that anywhere. In fact, especially the project page is very explicit about what functionality the project provides. Also, it might help to study the description of the umbrella project,它试图为其中包含的所有模块设置一些基本上下文。