首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与javax.persistence JAR有关的Maven依赖关系?

与javax.persistence JAR有关的Maven依赖关系?
EN

Stack Overflow用户
提问于 2014-02-03 09:18:19
回答 3查看 17.8K关注 0票数 9

我正在使用Spring 3和Hibernate 4 JPA。我对javax.persistence JAR感到困惑。我在Google上发现了下面的两个Maven依赖项。请告诉我在以下两个依赖项中需要哪一个?

代码语言:javascript
复制
       <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0.2</version>
        </dependency>

       <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.0.0</version>
        </dependency>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-03 09:38:34

这些javax.persistence.persistence-api中的第一个是API,它定义了应用程序应该使用的与供应商无关的接口。

第二个是该API的EclipseLink实现。

可以删除对第一个javax.persistence依赖项的引用,只需使用EclipseLink jar即可。然而,有很好的理由不这样做。

根据与供应商无关的javax.persistence API编写和编译代码,可以确保应用程序代码可移植到不同的持久性提供程序。例如,如果希望切换到Hibernate,则可以将其放入pom.xml并删除org.eclipse依赖项,而无需更改任何应用程序代码。

然而,还有一个额外的细节,你应该改变。为了确保应用程序能够在持久性提供程序之间切换,“实现”依赖应该只在运行时使用。否则,特定于供应商的代码很容易进入您的代码库。将以下内容添加到org.eclipse依赖项中,并查看应用程序是否编译。

代码语言:javascript
复制
<scope>runtime</scope>

因此,您可能会发现您的应用程序中包含特定于EclipseLink的代码。这意味着,如果不更改代码库,就无法更改持久性提供程序。

这是否是个问题取决于你。;)

票数 11
EN

Stack Overflow用户

发布于 2014-02-03 09:22:19

代码语言:javascript
复制
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>2.0.0</version>
</dependency>

这是最新的和紧凑的hibernate 4。也是最新版本的hibernate支持JPA2.1.0请检查这个链接

票数 1
EN

Stack Overflow用户

发布于 2014-02-03 09:36:05

您不需要显式地包含该依赖项,它位于Hibernate pom中,并且将被临时添加。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21523445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档