0

これらの2つのアノテーションAPIについて混乱しています。私はグーグルで検索し、JPAがインターフェースであり、Hibernateアノテーションが実装であることを理解しています。そうですか?

しかし、プロジェクトでどちらを使用する必要がありますか?どちらが優れているのか、そしてその理由は?

4

2 に答える 2

6

1行を変更するだけでいつでも簡単に実装(つまりJPAベンダー)を変更できるので、JPAを選びます。HibernateやOpenJPAのような他のベンダー、ToplinkはJPA標準への実装を提供します。
アノテーションについては、JPAとHibernateの両方がアノテーションのサポートを提供しますjavax.persistence

JPAとHibernate

a)JPAは、コードで使用する永続性APIです。

b)JPA Apiは、実際の作業を行うために、実際の永続性プロバイダー(例:Hibernate / TopLink)に呼び出しを渡します。

c)パフォーマンスの観点から見た場合、それは実際の永続性プロバイダー(Hibernate / TopLink)に依存し、単なるラッパーレイヤーとしてのJPAには依存しません。

d)コードの依存関係の観点から見ている場合、コードは標準のJava Apiに依存しているため、JPAの方が理にかなっています。

e)Hibernateを使用したことがある場合、基準クエリなどの特定の機能がJPAに欠落していることがわかります。これは、アプリケーションで基準クエリを記述できないことを意味するのではなく、JPAエンティティマネージャーからSessionオブジェクトを取得する必要があります。これで、休止状態のプロジェクトと同じくらい上手になります。

しかし、現在、コードは特定のimpl(Hibernate)に依存しています。今後、JPA(2.0)でさらに多くのものが追加されるのを見ることができます。

f)JPAを使用する必要がある場合:私の考えでは、APIはクリーンであり、必要なものはすべてありませんが、良い一歩です。

ソースリンク

于 2012-09-10T12:04:38.023 に答える
2

基本的に、Hibernate は JPA 仕様を実装し、仕様以上の機能を追加します。そのため、Hiberate 固有の注釈はこれらの追加機能です。したがって、Hibernate 固有の機能の使用を強制するマッピングに遭遇するまで JPA アノテーションを使用し、それらのアノテーションを使用してそれらの機能を取得する必要があります。

于 2012-09-10T12:06:53.870 に答える