JPA と Hibernate の違いは何ですか? [closed] 質問する

JPA と Hibernate の違いは何ですか? [closed] 質問する

JPA 2 は仕様であり、Hibernate は ORM 用のツールであることは理解しています。また、Hibernate には JPA 2 よりも多くの機能があることも理解しています。しかし、実用的な観点から見ると、実際の違いは何でしょうか?

私は iBatis の使用経験があり、現在は Hibernate または JPA2 を学習しようとしています。Pro JPA2 の本を手に取ったのですが、そこには「JPA プロバイダー」という記述が何度も出てきます。たとえば、次のようになります。

機能を標準化する必要があると思われる場合は、発言してJPAプロバイダーに要求してください。

これは私を混乱させるので、いくつか質問があります:

  • JPA2だけを使用して、POJOに注釈を付けるだけでDBからデータを取得できますか?
  • JPA2 は、TopLink や Hibernate などの「JPA プロバイダー」と一緒に使用する必要がありますか? そうであれば、JPA2 単独、または Hibernate 単独と比較して、JPA2 + Hibernate を使用する利点は何ですか?
  • 実用的な JPA2 の本をお勧めいただけますか。「Pro JPA2」は、JPA2 のバイブルやリファレンスのようです (本の後半までクエリについては触れられていません)。JPA2 に対して問題/解決アプローチを採用している本はありますか。

ベストアンサー1

おっしゃるとおり、JPA は単なる仕様であり、実装はありません。クラスに JPA アノテーションを好きなだけ追加できますが、実装がなければ何も起こりません。JPA は従うべきガイドラインまたはインターフェースと考えてください。一方、Hibernate の JPA 実装は、JPA 仕様で定義された API に準拠し、内部の機能を提供するコードです。

Hibernate を JPA と一緒に使用する場合、実際には Hibernate JPA 実装を使用しています。この利点は、Hibernate の JPA 実装を JPA 仕様の別の実装に交換できることです。Hibernate をそのまま使用すると、他の ORM が異なるメソッド/構成および注釈を使用する可能性があるため、実装が固定され、別の ORM に簡単に切り替えることができなくなります。

より詳しい説明については、ブログの記事

おすすめ記事