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