究竟是什么代表了用于Spring项目数据库访问的这些依赖?

时间:2015-11-20 11:22:29

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

我在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;概念创建查询)

我的推理是正确还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

JPA只是注释(一种接口),可用于标记您的类实体和关系。稍后您可以使用Hibernate(或EclipseLink)作为JPA的实现。

因此,您可以更改实现,留下注释(接口)。

同时检查this