web-dev-qa-db-ja.com

JPAの実装-どちらが最適ですか?

以下のJPA実装を利用しました。

  1. ハイバネート、
  2. トップリンク、
  3. OpenJPA

それぞれに長所と短所があります。 Hibernateは、独自の拡張機能の一部をJPAと混合して他のプロバイダーへの切り替えを困難にしたことを除いて、3つの中で最も高度なものでした。最も重要なのは、JPAを解釈するときに、そのクエリパーサーがはるかに寛容であったことです。すべての依存関係の適切なバージョンを取得しようとする使命を見つけたため、Hibernateをサポートする正しいライブラリを取得するのが少し難しくなります。

Toplinkはまあまあでしたが、オラクルがあなたに使用/購入してほしいように見えるので、それは少し不自由な感じで残っていますか?彼らのより高度なライブラリ。 jarファイルを実行してインストールする必要があるため、ダウンロードもミッションでした。基本的なJPA仕様のみを実装していることがわかりました。私がそれを使用した理由は、休止状態であったため、特にJBossを使用する場合に、クラスローダーの問題が頻繁に発生する他のオープンソースプロジェクトで一般的に使用されているライブラリを使用しています

OpenJPA-これは最も優れたドキュメントであり、ダウンロードして使用するのは簡単ですが、非常にバグが多いようです。多分それは私のコードだけかもしれませんが、CascadeType.allセットとのOneToMany関係などのより高度な使用法を見つけたコードは機能しないようです。確かに、コードが間違っていた可能性があり、クリーンなケースをテストする時間はありませんでしたが、このような多くのインシデントにより、使用するのが怖いままになっています。私はそれが良くなることを本当に望みます。そのエラーメッセージは、問題の解決に役立たないことがよくあります。

他にどのようなライブラリが使用されていますか、どのライブラリが好まれますか、またその理由は何ですか?

33
mxc

これらの実装についても同じ結論が得られました。

  1. OpenJPAはバギーだった/バギーに見えた

  2. Hibernateには大量のライブラリがあり、すべてを遅延ロードするnotに問題があるようです。

  3. トップリンクは私の選択として終わった。 Hibernateほど柔軟ではありませんでしたが、機能し、commons-loggingをインストールする必要はありません。

次に試すのはJPOXです。JPOXは最近 datanucleus に名前が変更されました。

18
Clint

個人的には、OpenJPAがまだ十分に成熟しているとは思いません。より成熟した他のオープンソースライブラリがあり、私はむしろそれらを使用したいと思います。これらは私が順番に検討するものです:

  1. 休止状態。 Hibernateは長い間使用されており、JavaでのORMへの道を本当に開きました。 Hibernateで私が持っている唯一の問題はライセンスです。これはLGPLライセンスであり、一部の商業企業が混乱する可能性があります(理由はここでは説明しません)。とにかく、LGPLが問題である場合は、明確にすることはおそらく良いことです。

  2. EclipseLink。日食の背景。 Toplink Essentialsは、JPA実装のOracleの無料バージョンでした。 EclipseLinkは、Oracleの本格的なJPA実装であるToplinkから取得されました。 EclipseLinkはGlassfish v3.0のJPA 2.0プロバイダーになるため、すべてがToplink EssentialsからEclipseLinkに移行しているようです。 EclipseLinkのバージョンは1.0.2だけですが、この製品は他の名前で長い間使用されています。

現在取り組んでいるプロジェクトはToplink Essentialsにありますが、まもなくEclipselinkに切り替える予定です。 Hibernateは、前に述べたライセンスの問題に対応していませんでした。

7
Chris Dail

OpenJPAは、BEAがかなり前に購入したKodoとして知られています。 KodoはJDOの実装で、現在はJPAです。また、OpenJPAをかなり集中的に使用しています。したがって、私はそれが成熟していないとは言いません。大丈夫ですが、Hibernate、つまりHibernateのJPAラッパーを使用することをお勧めします。

理由? 1)JPAはHibernateに非常によく似ています。2)多くの職位にはHibernateの要件があります。主流の製品に頼る方が良い...基本的に

4
kdxx