誰かがJPAとHibernateの違いを概観できますか? それとも、これらは補完的な概念であり、一緒に使用されますか?
3 に答える
大まかに言うと、JPA は Java コミュニティの標準であり、Hibernate の連中によって実装 (および拡張) された specsです (いくつかの情報はこちら)。仕様であるため、JPA を直接使用するのではなく、JPA 実装を使用します。
休止状態の JPA の拡張機能を使用する場合は、他の JPA 実装との互換性が損なわれることに注意してください (ただし、「別の JPA 実装を使用する必要があるのはなぜですか?」と言う人もいます)。
2015 年の更新: これは非常に古い質問であり、過去 6 年以内に多くの変更がありました。最近の JPA API は非常に機能が豊富であり、JPA と連携するツールやフレームワークがますます増えているため、JPA を使用することをお勧めします。1 つの例は Spring Data JPA です。一般的なタスクの多くのボイラープレートを削除し、驚異的な生産性を実現します。
http://projects.spring.io/spring-data-jpa/
元の回答: cheng81 のコメントに反響し、プレーンな Hibernate API の使用についても投票します。JPA の機能セットは Hibernate の機能セットよりも小さく、「標準」であるという理由だけで「純粋な JPA」で不利になる理由はないと思います。
Hibernate は非常に優れたソリューションですが、そのライセンス (GPL) により、一部のプロジェクトでは使用できません。
JPA は、Hibernate を含むさまざまな実装をサポートする仕様ですが、OpenJPA やその他の特性の異なる製品もサポートします。
Hibernate を使用するだけで済む場合は、成熟しており、安定しており、パフォーマンスが優れているため、使用する価値があるかもしれません。ただし、非 GPL ライセンスで出荷される製品に永続化エンジンを組み込む必要がある場合は、JPA ルートに進む必要があります (または、商用 Hibernate ライセンスの料金を支払う必要があります)。