繁体   English   中英

关于javax.persistence JAR的Maven依赖关系?

[英]Maven dependencies regarding javax.persistence JAR?

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

       <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>

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

第二个是该API的EclipseLink实现。

可以删除对第一个javax.persistence依赖项的引用,只使用EclipseLink jar。 但是有充分的理由不这样做。

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

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

<scope>runtime</scope>

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

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

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

哪个是最新的和紧凑的hibernate 4.另外最新版本的hibernate支持jpa 2.1.0请检查此链接

您不需要明确地包含该依赖项,它在Hibernate pom中并且将被传递地添加

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM