2

私の知る限り、Hibernate には 2 種類の実装があります。

  1. JPAの実装 (2)(@Entity、@Tableアノテーション)
  2. 古い(従来の)休止状態への拡張(JPAなし)、HSQLクエリが使用され、注釈はありません

それが本当なら、JPA は ORM 仕様であるのに、なぜ 2 番目のタイプの実装が必要なのですか? 比較しながらAPIのバージョンを教えていただけると、ORMの評価履歴全体が把握できるのではないでしょうか?ありがとう。

4

3 に答える 3

2

Hibernateは、JPA仕様の前の最初のORMツールの1つでした。また、Java 5より前(Javaでアノテーションが利用可能になったとき)の開発者であったため、すべてがXML構成ベースまたはXDocletのいずれかでした。

SpringとHibernateから多額の借用をしたJavaEEの大幅な改良があり、JPAが導入されましたが、独自の実装をプラグインできるほど「汎用的」でした。

Hibernateの動作に実際の違いはなく、構成に使用するメカニズムだけです。JPAアノテーションが標準になりましたが、必要な場合にのみXMLを使用できます。

于 2013-01-13T22:21:22.743 に答える
1

Hibernate の2 つの異なる実装などというものはありません。公式の実装は 1 つだけです。アノテーション/JPA機能を介してHibernateを使用するか、明示的なHibernateクラスを介してHibernateを使用できます。ただし、基礎となる Hibernate ライブラリは同じです。

JPA は、Hibernate (および他の同様のライブラリ) が実装する単なるインターフェースです。

歴史は、90 年代後半に誰かが EJB を発明したことを示しています。Java コミュニティの共通のコンセンサスは、誰もそれを好きではなく、多くの人が Hibernate または同様のフレームワークを使用しただけだということです。これは、EJB の永続性が Hibernate の動作方法にほぼ基づいてモデル化された EJB 3.0 まででした (EJB にはデータ マッピングだけでなく、他のタイプの Bean があることに注意してください)。

于 2013-01-13T22:19:21.230 に答える
0

私が覚えている限りでは、Hibernate の注釈はバージョン 3.2 かそこらから導入されました。JPAアノテーション(javax.persistenceパッケージ)について話しているのではなく、hibernate-annotationsパッケージにあるhibernate固有のアノテーションです。

Hibernate 固有のアノテーションで実行できるほとんどすべてのことは、最近では JPA2 でも実行できます。

前述のとおり、JPA は単なるインターフェースであり、そのインターフェースにコーディングすると、(少なくとも理論的には) 基礎となる ORM プロバイダーを別のもの (TopLink、OpenJPA、または Eclipselink など) に置き換える方が簡単になります (する必要があります)

于 2013-01-14T09:51:18.747 に答える