Hibernate(フレームワーク)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Hibernate ORM
Hibernateロゴa.png
開発者Red Hat
初回リリース2001年5月23日; 20年前 (2001-05-23
安定リリース
5.6.0。最終/2021年10月13日; 5か月前[1] (2021-10-13
プレビューリリース
6.0.0.Beta1/2021年10月11日; 5か月前[2] (2021-10-11
リポジトリ
で書かれているJava
オペレーティング・システムクロスプラットフォームJVM
プラットホームJava仮想マシン
タイプオブジェクトリレーショナルマッピング
ライセンスGNU劣等一般公衆利用許諾契約書
Webサイトhibernate .org

Hibernate ORM(または単にHibernate)は、 Javaプログラミング言語用のオブジェクトリレーショナルマッピングツールです。これは、オブジェクト指向ドメインモデルをリレーショナルデータベースにマッピングするためのフレームワークを提供します。Hibernateは、直接の永続的なデータベースアクセスを高レベルのオブジェクト処理機能 に置き換えることにより、オブジェクトとリレーショナルのインピーダンス不一致の問題を処理します。

Hibernateは、 GNU劣等一般公衆利用許諾契約書2.1 に基づいて配布される自由ソフトウェアです。

Hibernateの主な機能は、Javaクラスからデータベーステーブルへのマッピング、およびJavaデータ型からSQLデータ型へのマッピングです。Hibernateは、データクエリおよび取得機能も提供します。SQL呼び出しを生成し、結果セットの手動処理とオブジェクト変換から開発者を解放します。

マッピング

Javaクラスのデータベーステーブルへのマッピングは、XMLファイルの構成またはJavaアノテーションを使用して実装されます。XMLファイルを使用する場合、Hibernateは永続クラスのスケルトンソースコードを生成できます。これは、注釈が使用される場合の補助です。Hibernateは、XMLファイルまたはJavaアノテーションを使用してデータベーススキーマを維持できます。

クラス間の1対多および多対多の関係を調整するための機能が提供されています。オブジェクト間の関連付けを管理することに加えて、Hibernateは、オブジェクトがクラスタイプの他のインスタンスと1対多の関係を持つ再帰的な関連付けを管理することもできます。

Hibernateはカスタム値型のマッピングをサポートします。これにより、次のシナリオが可能になります。

  • 列をプロパティにマッピングするときにデフォルトのSQLタイプをオーバーライドします。
  • 通常のプロパティであるかのように、Java列挙型を列にマッピングします。
  • 単一のプロパティを複数の列にマッピングします。

定義: オブジェクト指向アプリケーションのオブジェクトはOOPの原則に従いますが、バックエンドのオブジェクトはデータベースの正規化の原則に従うため、異なる表現要件が発生します。この問題は「オブジェクトと相対インピーダンスの不一致」と呼ばれます。マッピングは、オブジェクトとリレーショナルのインピーダンス不整合の問題を解決する方法です。

マッピングは、どのJavaクラスオブジェクトをどのデータベーステーブルに格納するかをORMツールに通知します。

Hibernateクエリ言語(HQL)

Hibernateは、Hibernateのデータオブジェクトに対してSQLのようなクエリを作成するためのHibernateクエリ言語(HQL)と呼ばれるSQLに触発された言語を提供します。基準クエリは、HQLのオブジェクト指向の代替手段として提供されます。基準クエリは、オブジェクトを変更し、オブジェクトに制限を与えるために使用されます。HQL(Hibernate Query Language)は、SQLのオブジェクト指向バージョンです。データベースに依存しないクエリを生成するため、データベース固有のクエリを作成する必要はありません。この機能がないと、データベースを変更するために個々のSQLクエリも変更する必要があり、メンテナンスの問題が発生します。

永続性

Hibernateは、Plain Old Java Object(POJO)に透過的な永続性を提供します。永続クラスの唯一の厳密な要件は、引数なしのコンストラクターですが、必ずしもそうとは限りませんpublic一部のアプリケーションでの適切な動作には、オブジェクトクラスのequals()およびメソッドにも特別な注意が必要です。[3] Hibernateは識別子属性を提供することを推奨しており、これは将来のリリースで必須の要件になる予定です。[4]hashCode()

Setデータオブジェクトのコレクションは、通常、およびListインターフェイスの実装などのJavaコレクションクラスに格納されます。Java5で導入されたJavaジェネリックもサポートされています。Hibernateは、関連するコレクションを遅延ロードするように構成できます。遅延読み込みは、Hibernate3のデフォルトです。

関連するオブジェクトは、あるオブジェクトから別のオブジェクトに操作をカスケードするように構成できます。たとえば、親クラスオブジェクトは、その操作操作を子クラスオブジェクトAlbumにカスケードするように構成できます。 savedeleteTrack

統合

Hibernateは、スタンドアロンJavaアプリケーションと、サーブレットEJBセッションBean、およびJBIサービスコンポーネントを使用するJavaEEアプリケーションの両方で使用できます。他のプログラミング言語の機能として含めることもできます。たとえば、AdobeはHibernateをバージョン9のColdFusion (J2EEアプリサーバーで実行)に統合し、 CFMLに新しい関数と構文の抽象化レイヤーを追加しました

エンティティとコンポーネント

Hibernateの専門用語では、エンティティはHibernateの永続メカニズムのスタンドアロンオブジェクトであり、他のオブジェクトとは独立して操作できます。対照的に、コンポーネントはエンティティに従属しており、そのエンティティに関してのみ操作できます。たとえば、Albumオブジェクトはエンティティを表す場合があります。ただし、トラックがアルバムオブジェクトを介してデータベースからのみ保存または取得できると想定される場合、アルバムオブジェクトに関連付けられたトラックオブジェクトはアルバムエンティティのコンポーネントを表します。J2EEとは異なり、Hibernateはデータベースを切り替えることができます。

歴史

Hibernateは、EJB2スタイルのエンティティBeanを使用する代わりに、CirrusTechnologiesの同僚とGavinKingによって2001年に開始されました。当初の目標は、EJB2が提供するものよりも優れた永続性機能を提供することでした。複雑さを単純化し、特定の不足している機能を補足することによって。

2003年の初めに、Hibernate開発チームはHibernate2リリースを開始しました。これにより、最初のリリースに比べて多くの重要な改善が提供されました。

JBoss、Inc.(現在はRed Hatの一部)は、開発を促進するために、後に主要なHibernate開発者を採用しました。

2005年に、Hibernateバージョン3.0がリリースされました。主な機能には、新しいインターセプター/コールバックアーキテクチャ、ユーザー定義のフィルター、およびJDK 5.0アノテーション(Javaのメタデータ機能)が含まれていました。2010年の時点で、Hibernate 3(バージョン3.5.0以降)は、JSR317標準への準拠を提供するCoreモジュールのラッパーを介したJavaPersistenceAPI2.0仕様の認定された実装でした。[5]

2011年12月、Hibernate Core4.0.0Finalがリリースされました。これには、マルチテナンシーサポート、ServiceRegistryの導入(Hibernateが「サービス」を構築および管理する方法の大幅な変更)、SessionFactoryからのセッション開始の改善、org.hibernate.integrator.spi.Integratorによる統合の改善、自動検出などの新機能が含まれます。 国際化のサポート、ロギングのメッセージコード、およびAPI、SPI、または実装クラス間のより多くの区別。[6]

2012年12月、Hibernate ORM4.1.9Finalがリリースされました。[7]

2013年3月、Hibernate ORM4.2Finalがリリースされました。[8]

2013年12月、Hibernate ORM4.3.0Finalがリリースされました。[9] Java PersistenceAPI2.1を備えています

2015年9月、Hibernate ORM5.0.2Finalがリリースされました。ブートストラップ、hibernate-java8、hibernate-spatial、Karafのサポートが改善されました。

2018年11月、Hibernate ORM5.1.17Finalがリリースされました。これは5.1シリーズの最終リリースです。

2018年10月、Hibernate ORM5.3Finalがリリースされました。Java PersistenceAPI2.2継承キャッシング を備えていました。

2018年12月、Hibernate ORM5.4.0Finalがリリースされました。[10]

アプリケーションプログラミングインターフェース

Hibernate APIは、Javaパッケージorg.hibernateで提供されます。[11]

org.hibernate.SessionFactoryインターフェース

org.hibernate.Sessionインターフェース

org.hibernate.Sessionインターフェース[12]は、Hibernateセッション、つまりデータベースエンティティで実行される操作の要点を表します。後者のアクティビティには、(とりわけ)オブジェクトの永続状態(一時的永続的、切り離された[明確化が必要])の管理、永続化されたオブジェクトのデータベースからのフェッチ、およびトランザクション境界の管理[明確化が必要]が含まれます。

セッションは、データベース上の論理トランザクションが続く限り続くことを目的としています。後者の機能のため、セッションの実装はスレッドセーフであるとは期待されておらず、複数のクライアントによって使用されることも期待されていません。

ソフトウェアコンポーネント

Hibernateソフトウェアには、次のコンポーネントが含まれています。[13]

も参照してください

参照

  1. ^ 「HibernateORM5.6.0。最終リリース」2021年10月26日取得
  2. ^ 「HibernateORM6.0.0.Beta1がリリースされました」2021年10月26日取得
  3. ^ 「EqualsandHashCode」JBossコミュニティ。
  4. ^ 「Hibernateユーザーガイド:2.5.5。識別子属性を提供する」JBossコミュニティ。
  5. ^ 「Hibernate3.5.0-最終リリース」に関して...
  6. ^ 「リリース-HibernateORM」hibernate.org
  7. ^ 「アーカイブされたコピー」2013-01-29にオリジナルからアーカイブされました2012年12月13日取得{{cite web}}: CS1 maint: archived copy as title (link)
  8. ^ 「アーカイブされたコピー」2014年12月5日にオリジナルからアーカイブされまし2014年11月27日取得{{cite web}}: CS1 maint: archived copy as title (link)
  9. ^ 「アーカイブされたコピー」2014年12月5日にオリジナルからアーカイブされまし2014年11月27日取得{{cite web}}: CS1 maint: archived copy as title (link)
  10. ^ 「リリース-HibernateORM」hibernate.org
  11. ^ 「HibernateJavaDocs」docs.jboss.org
  12. ^ 「セッション(Hibernate JavaDocs)」docs.jboss.org
  13. ^ 「Hibernate:Javaおよび.NETのリレーショナル永続性」JBossコミュニティ。
  14. ^ 「HibernateORM4.1.0リリース」JBossコミュニティ。
  15. ^ 「HIBERNATE-慣用的なJavaのリレーショナル永続性」JBossコミュニティ。
  16. ^ 「Hibernate-アノテーションモジュールはもうありません」JBossコミュニティ。
  17. ^ 「Hibernateアノテーション」JBossコミュニティ。
  18. ^ 「hibernate-entitymanagerがhibernate-coreにマージされました」JBossコミュニティ。
  19. ^ 「HibernateEntityManager」JBossコミュニティ。
  20. ^ 「HibernateEnvers–簡単なエンティティ監査」JBossコミュニティ。
  21. ^ 「HibernateOGM」JBossコミュニティ。
  22. ^ 「休止状態の破片」JBossコミュニティ。
  23. ^ 「休止状態の検索」JBossコミュニティ。
  24. ^ 「EclipseおよびAnt用のHibernateツール」JBossコミュニティ。
  25. ^ 「HibernateValidator」JBossコミュニティ。
  26. ^ 「Hibernateメタモデルジェネレータ」JBossコミュニティ。
  27. ^ 「NHibernate」NHibernateForge。2012年7月12日にオリジナルからアーカイブされました2011年4月26日取得

参考文献

外部リンク