Spring Data JPA是JPA实现吗?

时间:2016-04-28 16:49:34

标签: spring hibernate jpa spring-data spring-data-jpa

我正在尝试"真的"了解Spring Framework。我对Spring Core(DI)和Spring MVC有了一些了解。

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

现在,当我启动Spring Data JPA时,我的印象是Spring Data JPA是JPA规范的独立实现。事实证明我错了。

如果我理解正确,Spring Data JPA是Spring提供的抽象层,它在内部使用其他JPA提供程序(示例Hibernate),所以通常它是这样的:

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

我的理解是否正确?如果是这样的话,Spring Data JPA会误导?它本身不是JPA提供者,它只是一个抽象层,它在其他JPA provider之上工作。

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

任何人都可以帮我理解吗?

1 个答案:

答案 0 :(得分:32)

我不认为这是错误的名称(免责声明:我是项目负责人)。所有Spring Data项目都会在其名称中列出基于的商店或API。 Spring Data JPA基本上是Spring Data for JPA,就像Spring Data MongoDB是Spring Data for MongoDB一样,就像Spring Batch是Spring for 批处理一样应用程序,Spring Integration是用于集成项目的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也不是reference documentation状态。实际上,尤其是project page非常清楚项目提供的功能。此外,它可能有助于研究description of the umbrella project,它试图为其中包含的所有模块设置一些基本上下文。