我正在尝试"真的"了解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框架,或者它是一个复杂的框架?
任何人都可以帮我理解吗?
答案 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,它试图为其中包含的所有模块设置一些基本上下文。