web-dev-qa-db-ja.com

休止状態ベースのアプリケーションでjavax.persistenceパッケージを使用するには、どのjarを含める必要がありますか?

Glassfishプロジェクト(glassfish-persistence-api)から取得しても大丈夫ですか、それともHibernate jarがありますか?

42
Sergey

OSGiシステムを開発している場合は、「バンドルされた」バージョンを Springsource Enterprise Bundle Repository からダウンロードすることをお勧めします。

それ以外の場合、javax.persistenceパッケージを含む通常のjarファイルを使用しても問題ありません

12
Schildmeijer

Mavenを使用している場合は、以下の依存関係を追加する必要があります

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0</version>
</dependency>
15
Bahadır Yağan

Hibernateにバンドルされているejb3-persistence.jarを使用できます。このjarにはjavax.persistenceパッケージのみが含まれます。

12
alves

最新かつ最高のHibernateでは、lib/jpaディレクトリ内にhibernate-jpa-2.0-api-1.0.0.Final.jarを含めることで依存関係を解決できました。最新のダウンロードでejb-persistence jarが見つかりませんでした。

8
Dave Shah

hibernate.jarおよびhibernate-entitymanager.jarには、パッケージorg.hibernate。*のみが含まれています。したがって、Glassfishプロジェクトから取得する必要があります。

4

JPA 2.1の場合、javax.persistenceパッケージは次の場所にあります。

<dependency>
   <groupId>org.hibernate.javax.persistence</groupId>
   <artifactId>hibernate-jpa-2.1-api</artifactId>
   <version>1.0.0.Final</version>
</dependency>

参照: Maven Centralのhibernate-jpa-2.1-api パターンは、JPAバージョンの変更に伴いアーティファクト名を変更するようです。これが継続する場合、Maven Centralに新しいバージョンが到着することが予想されます。 Hibernate JPAバージョン

上記のJPA 2.1 APiは、特にHibernate 4.3.7と組み合わせて使用​​できます。

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>4.3.7.Final</version>
</dependency>
3
antonycc

一般的に、私はMaven依存関係を追加することを推奨する上記の回答に同意しますが、次の解決策を好みます。

完全なJavaEEプロファイルのAPIクラスを使用して依存関係を追加します。

<properties>
    <javaee-api.version>7.0</javaee-api.version>
    <hibernate-entitymanager.version>5.1.3.Final</hibernate-entitymanager.version>
</properties>

<depencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>${javaee-api.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

また、antonyccが提案するような特定のJPAプロバイダーとの依存関係を追加します。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>
</dependency>

注意 <scope>provided</scope> AP​​I依存関係セクション:これは、対応するjarがアーティファクトのlib/、ただしアプリケーションサーバーによって提供されます。アプリケーションサーバーが指定されたバージョンのJavaEE APIを実装していることを確認してください。

3
yaromir