Hibernateと他のフレームワークまたは仕様の違い/類似点はどれですか?
-
01-10-2019 - |
質問
Java EE 5の冬眠と単純な持続性の違い/類似性を知りたいですか?
HibernateがJava EE 5永続性実装を実装しているのか、それともバックエンドシステム上のデータ表現とまったく異なるアプローチであるかどうかは明らかではありません。
Hibernateとその関係については、Java EE 5チュートリアルで与えられたJavaの持続性に関する概念との関係について混乱しています...エンティティとEJBの文脈におけるHibernateの役割を明確にすることができますか?
また、JPAや春のような他のアプローチ(フレームワーク)を知りたいです...
解決
Java EE 5の冬眠と単純な持続性の違い/類似性を知りたいですか?
標準化された持続性 API Java EE 5はJPA 1.0であり、EJB 2 CMP、JDO、Hibernate、Toplink APIおよび製品の一種の統一バージョンです。 HibernateはJPAより前のORMフレームワークであり、JPAの仕様に大きく影響しました(Hibernateの作成者はJPAの背後にある専門家グループのメンバーです)。 JPAは単なるAPIであることに注意してください。 実装 それを使用するJPAの。
HibernateがJava EE 5永続性実装を実装しているのか、それともバックエンドシステム上のデータ表現とまったく異なるアプローチであるかどうかは明らかではありません。
はい、hibernateはJPAの実装を提供します(また、それを拡張します、HibernateはJPAのスーパーセットです) Hibernate EntityManager プロジェクト(依存しています 冬眠コア).
Hibernateとその関係については、Java EE 5チュートリアルで与えられたJavaの持続性に関する概念との関係について混乱しています...エンティティとEJBの文脈におけるHibernateの役割を明確にすることができますか?
Hibernateは、JPA Persistenceプロバイダーとして、つまりEJB 3エンティティを実際に持続するコードとして使用できます(JPA仕様はバージョン1.0のEJB 3.0仕様の一部であり、現在は個別の仕様になりました)
また、JPAや春のような他のアプローチ(フレームワーク)を知りたいです...
春は永続的なフレームワークではなく、春はIOCコンテナであり、冬眠と競合するものではありません。
HibernateのJPA準拠の代替品には、TopLink Essentials(Java EE 5のRI)、Eclipselink(Java EE 6のJPA 2.0のRI)、OpenJPA、Datanucleusが含まれます。
持続性のその他のオプションには、JDO(別の標準化された持続性API)、Ibatis(ORMではなく、データマッパーです)、JDBC(低レベルAPI)が最も有名なものを引用します。
これをチェックして 前の答え 概要といくつかの歴史的背景。
他のヒント
JPA(Java EE 5 Persistence Standard)がJCP Expert Group(JSR 220)によって開発されたとき、既存のHibernate(JDOから)から多くのアイデアが取られました。 Hibernate自身の創設者であるGavin Kingは、とりわけ専門家グループの一員です。
最終的なJPA仕様が公開された後、Hibernateはそれのオープンソースの実装になりました(バージョン3.2以降)。 Hibernateにはまだより豊富な機能セットがあり、通常、オープンソース開発プロセスがJavaコミュニティプロセスよりも速くなる傾向があるため、新しい機能をより速く生成します。
JPAのその他の実装は次のとおりです。
- Datanucleus
- eclipselink
- openjpa
他のアプローチは次のとおりです。
- JDO
- イバティス
- プレーンJDBC
EE5で説明されているJPA仕様は、単なる仕様です。これは、それが製品ではないことを意味します。 JPAは、さまざまなプロバイダーが「JPA苦情」になるために達成しなければならない一連の定義にすぎません。
Hibernateは、もう1つの「プラグ可能な」永続性プロバイダーにすぎません。これは、この製品がJPA仕様によって与えられた定義を実装することを意味します。 TopLinkやApacheのOpenJPAなど、他の同様の製品を見つけることができます。
それだ。
わずかに話題から外れていますが、JPAは「セッション指向の」アーキテクチャを意味します。それはあなたの豆がentityManagerに取り付けられ/分離され、あなたはentityManagerを持続/マージ/フラッシュします。
ORMへの「セッションレス」アプローチ(添付/デタッチされた永続/マージ/フラッシュなし)を探している場合は、マッピングにJPAアノテーションを使用するEBEAN ORMも見ることができます。また、これを「EBEANは永続性コンテキストの自動管理を提供する」と説明することもできます。