我在JPA \ Hibernate中很新,我有以下疑问。
在Spring MVC项目的 pom.xml 文件中,我发现以下依赖项已添加到我的项目中(使用JPA实现我的存储库)。
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.8.2.RELEASE</version>
</dependency>
</dependencies>
所以我试图理解这个项目的架构以及这些依赖性到底是什么。
因此,据我所知,JPA只是一个规范,我无法在没有实现的情况下使用它。那么JPA就像一组接口,指定我可以执行哪些操作,然后我需要一些实现该操作的东西?
1)所以,根据我的理解,第一个工件( hibernate-jpa-2.1-api )应该是 JPA规范。
这里的结构文档:https://docs.jboss.org/hibernate/jpa/2.1/api/和实际查看列出的包在我看来几乎是接口而不是实现类。
如果这个断言是正确的,我怀疑的是:为什么如果它是 hibernate 下提供的JPA规范应该是这个规范的实现? (存在不同版本的JPA特定或是否独一无二?)
2) hibernate-core 工件应该是JPA实现(据我所知存在各种实现,Hibernate就是其中之一,另一个是EclipseLink等)。所以这个工件为我提供了允许我与数据库具体交互的工具)
3) spring-data-jpa 是Spring Data的一部分,可以更轻松地创建JPA存储库(例如,允许我使用&#34;规范&#34;概念创建查询)
我的推理是正确还是我错过了什么?
答案 0 :(得分:0)