2009-05-08 8 views
13

私はJava、.NET、Groovyでエンタープライズアプリケーションの開発を研究しています。各プラットフォームごとに、簡単なSOAP Webサービスを実現することがどれほど難しいかを試してみましょう。できるだけ正確に現実世界を研究するために、最も一般的に使用されるツールやライブラリを使用します。JPAまたはHibernate for Java Persistence?

永続性のためにHibernateを使用する場合、JPA(Java Persistence API)やJPAが登場する前に存在していたHibernateカスタムAPIを使用するほうが現実的ですか?

答えて

14

すでにご存知のように、HibernateはJPA認定を受けています。 Hibernateの「カスタム」APIを使用することなく、JPAプロバイダとしてHibernateを簡単に使用できます。

私は、プロバイダとしてHibernateでストレートJPAを使用することをお勧めします。また、XMLではなくアノテーションを使用する(もっとうまくいく)。

少し余分なものが必要な場合は、いつでもHibernateセッションを取得できます。たとえば、私はコレクションをパラメータ(setParameterList)としてクエリに渡すためにこれを行う必要があることがよくあります。 1の周り永遠にされているよう

+0

私は知っていますが、最近の講義では、JPAはまだ未熟であり、まだすべての高度な機能を公開していないと表現されました。 –

+1

JPAは、それがサポートしている基礎となる永続性レイヤーの間で最も低い共通分母としても機能しなければならないことに留意してください。したがって、HibernateがフィーチャーAをwhizzbangしていて、Toplinkがそうでない場合、JPA APIはフィーチャーを公開できません。 –

1

あなたが

新しい JPAあなたの質問を言葉で表現する方法面白いです...か昔ながら休止

が鳴り、他のは、ちょうどリリースされました。もちろんそれは真実ではありません。 JPAは、Hibernateだけでなく、TopLinkとJ2EEエンティティBeanの影響を受けました。 JSR 220ドラフトへの最初の言及は2003年からのものです。新しいものはどうですか? JPAをHibernateとともに使用する場合でも、Hibernateを引き続き使用し、Hibernateが持つ独自の拡張機能を自由に適用することができます。

ので、選択はあなた次第です:独自のAPIを使用するか、または同等の確立と標準APIを使用して...

0

あなたは休止状態を交換したいだけの場合には、純粋なJPA仕様に固執することができますが、何」たぶん、ある時点で、あなたは決してそれを交換するつもりはないと思うでしょうし、あなたは本当に素晴らしいHibernate特有の機能すべてを見逃していました。

Damoが示唆するように、HibernateをXMLの代わりに直接使用することをお勧めします。あなたは、Hibernateがもたらす「魔法」をしっかりと理解していることを確認してください。あなたが慎重でないなら、あなたは本当にデータベースを駄目にすることができます。

Hibernate OneToOne automatic join fetching (resolving n+1 problem)

を私はまたあなたのHibernateのクエリ上のユニット/統合テストのための組み込みデータベースを使用することをお勧めします、と腕時計と思います:たとえば、あなたは@OneToOneが参加しない方法に応じて、N + 1つのクエリー問題がありますあなたが手書きで書くように見えるように生成されたSQL。

関連する問題