当前位置: 首页 > 知识库问答 >
问题:

Spring项目的数据库访问所使用的这些依赖关系到底是什么?

杭英杰
2023-03-14

在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规范版本或其是否唯一?)

3)spring-data-jpa是Spring Data的一部分,它使创建JPA存储库变得更加容易(例如,允许我使用“规范”概念创建查询)

是我的推理正确还是我遗漏了什么?

共有1个答案

胡志
2023-03-14

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

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

还要检查这个

 类似资料:
  • 好几个概念 1.函数依赖 2.非平凡和平凡函数依赖 3.完全和部分函数依赖 4.传递函数依赖 5.逻辑蕴涵 6.Armstrong公理系统 7.范式 头都大了,能不能用简单的语言解释下啊。

  • 为了在我的spring boot项目上运行单元测试,我尝试使用JUnit和Mockito,但是很难找到如何在我的gradle项目的build.gradle文件中设置依赖项。下面是build.gradle文件: 现在我得到的错误是“不能解析org.Mockito:mockito-core:3.6.48”,我甚至不知道是否从https://github.com/Mockito/Mockito/rele

  • 在SecurityServiceImpl中注入此RoleRepo时,我面临此错误。 我的spring上下文文件 我的角色类

  • 问题内容: 我需要找到函数/过程(在包体内定义)和它们使用的表之间的依赖关系。 我试过了,但它仅在包级别有效,而在内部功能/过程级别无效。是否有可能使用eg找到这种依赖关系? 在此先感谢您的帮助。 问题答案: 无法找到过程(在包中)和表之间的依赖关系。 有几种工具可以检查依赖关系。正如您已经发现的那样,仅在每个包级别上跟踪对象依赖关系。有一个整洁的工具PL / Scope 可以跟踪软件包各部分之间

  • 我确实尝试了以下建议的步骤,但没有成功。我甚至在StackOverflow和github中尝试卸载nodejs和重新安装以及许多其他建议。有人能帮帮我吗? 项目依赖关系树可能有问题。这可能不是CreateReact应用程序中的错误,而是您需要在本地修复的错误。 创建反应应用程序提供的反应脚本包需要一个依赖项:"Babel-eslint":"^10.1.0" 不要尝试手动安装:您的软件包管理器会自动

  • spring-boot指南https://spring.io/guides/gs/messaging-jms/使用spring-boot-starter-activemq,然后引用spring-jms。如果我想使用一个不同的消息代理,而spring没有为那个特定的消息代理提供一个starter jar,我该如何在依赖项中包含spring-jms呢?我可以只包含spring-jms,还是有更好的方法