【发布时间】:2016-08-23 13:58:27
【问题描述】:
我正在尝试“真正”理解 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 框架还是完全是一个复杂的框架?
谁能帮我理解一下?
【问题讨论】:
-
是的,这是一个误导性的名称。是的,它不是 JPA 提供者。是的,它只是一个抽象层。是的,人们经常在此处将问题标记为 JPA,而他们的意思是 Spring Data JPA。还有很多其他的 JPA 实现都有自己的优势
-
似乎是对的,只是在我看来抽象级别非常高。 Spring Data JPA - Reference Documentation.
-
感谢您的回复。我相信本质上 Spring 使用“现有框架”,而不是它做任何规范实现?我对么?这让我想知道 Spring 是如何成为一个著名的框架,而它只是在底层使用现有的框架。
-
@CuriousMind 那是因为 Spring 是一个框架(大多数人在说“Spring”时指的是原始框架)。但与此同时,Spring 变成了一个完整的生态系统,由原始框架和许多其他框架、抽象等组成,例如 Spring Data。
-
感谢您的 cmets。我相信理解这一点仍然是一个陡峭的学习曲线,而且对于一个新来的人来说并不是那么简单。
标签: spring hibernate jpa spring-data spring-data-jpa