web-dev-qa-db-ja.com

Java Persistence API(JPA)実装に使用する必要があるプロバイダー

WebアプリケーションにJava Persistence API(JPA)を使用したい。

HibernateToplinkおよびEclipseLinkなどの一般的なJPA実装があります。どの実装が良い選択であり、なぜですか?

25
Dimitri Dewaele

Java Persistence API(API)が開発されたとき、非常に速く普及しました。 JPAは、Javaを使用するアプリケーションでのリレーショナルデータの管理について説明します。

JPA(Java Persistence API)は、持続性プロバイダーが実装するインターフェースです。

Hibernateは、JPAのそのような実装の1つです。 JPAでHibernateを使用する場合、実際にはHibernate JPA実装を使用しています。

JPAは通常、Javaクラスの注釈を介してメタデータを定義します。あるいは、XMLまたは両方の組み合わせを介して定義します。XML構成は注釈を上書きします。

JPA実装:

  • Hibernate:最も高度で広く使用されています。特にJBossを使用する場合は、多くのライブラリが使用されるため、クラスパスに注意してください。 JPA 2.1をサポートします。
  • Toplink:基本的なJPA仕様のみをサポートします。 (これは、JPA実装のOracleの無料バージョンでした)
  • EclipseLink:TopLinkに基づいており、OracleとTopLinkの永続化を目的としたフォワードパスです。 JPA 2.1をサポート
  • Apache OpenJPA:最高のドキュメントですが、非常にバグが多いようです。 JPAのオープンソース実装。 JPA 2.0をサポート
  • DataNucleus:十分に文書化されたオープンソース(Apache 2ライセンス)もJDOプロバイダーです。 JPA 2.1をサポート
  • ObjectDB:十分に文書化されています
  • CMobileCom JPA:JavaとAndroidの両方の軽量JPA 2.1実装。

他のアプローチは次のとおりです:

  • プレーンJDBC
  • Hibernateを使用したORM:HibernateもJPAを非常にサポートします
  • iBatis:プロジェクトはMyBatisに移動しました( link
  • JDO

私のJPA選択としてのHibernateの動機:

  • 成熟したプロジェクト:
    • 最も進んだ
    • よく文書化されている
  • 便利なHibernateサブプロジェクト
    • Hibernateツール:コードの自動生成とデータベース生成
    • Hibernate検証:Bean仕様機能。 JPA2と統合
    • Hibernate Search:ドメインオブジェクトの強力な全文検索
  • アクティブなコミュニティ
    • 大きな開発コミュニティ
    • 広く使われています

Hibernateは、最終仕様が公開されてから非常に早く、JPAのオープンソース実装になりました。オープンソースの開発プロセスは、Javaコミュニティプロセスよりも速くなる傾向があるため、豊富な機能セットがあり、新しい機能をすばやく生成します。

53
Dimitri Dewaele