Hibernate-アーキテクチャ

Hibernateには、ユーザーが基盤となるAPIを知らなくても操作できるようにする階層化アーキテクチャがあります。Hibernateは、データベースと構成データを利用して、アプリケーションに永続性サービス(および永続性オブジェクト)を提供します。

以下は、Hibernateアプリケーションアーキテクチャの非常に高レベルのビューです。

以下は、重要なコアクラスを備えたHibernateアプリケーションアーキテクチャの詳細図です。

Hibernateは、JDBC、Java Transaction API(JTA)、Java Naming and Directory Interface(JNDI)などのさまざまな既存のJavaAPIを使用します。JDBCは、リレーショナルデータベースに共通する機能の初歩的なレベルの抽象化を提供し、JDBCドライバーを備えたほぼすべてのデータベースをHibernateでサポートできるようにします。JNDIとJTAを使用すると、HibernateをJ2EEアプリケーションサーバーと統合できます。

次のセクションでは、Hibernateアプリケーションアーキテクチャに関連する各クラスオブジェクトについて簡単に説明します。

構成オブジェクト

Configurationオブジェクトは、Hibernateアプリケーションで作成する最初のHibernateオブジェクトです。通常、アプリケーションの初期化中に1回だけ作成されます。これは、Hibernateに必要な構成ファイルまたはプロパティファイルを表します。

構成オブジェクトは、2つの主要なコンポーネントを提供します-

  • Database Connection−これは、Hibernateでサポートされている1つ以上の構成ファイルを介して処理されます。これらのファイルはhibernate.properties そして hibernate.cfg.xml

  • Class Mapping Setup −このコンポーネントは、Javaクラスとデータベーステーブル間の接続を作成します。

SessionFactoryオブジェクト

構成オブジェクトは、SessionFactoryオブジェクトを作成するために使用されます。このオブジェクトは、提供された構成ファイルを使用してアプリケーションのHibernateを構成し、Sessionオブジェクトをインスタンス化できるようにします。SessionFactoryはスレッドセーフなオブジェクトであり、アプリケーションのすべてのスレッドによって使用されます。

SessionFactoryは重量級のオブジェクトです。通常、アプリケーションの起動時に作成され、後で使用するために保持されます。別の構成ファイルを使用して、データベースごとに1つのSessionFactoryオブジェクトが必要になります。したがって、複数のデータベースを使用している場合は、複数のSessionFactoryオブジェクトを作成する必要があります。

セッションオブジェクト

セッションは、データベースとの物理的な接続を取得するために使用されます。Sessionオブジェクトは軽量で、データベースとの対話が必要になるたびにインスタンス化されるように設計されています。永続オブジェクトは、Sessionオブジェクトを介して保存および取得されます。

セッションオブジェクトは通常スレッドセーフではないため、長期間開いたままにしないでください。必要に応じて作成および破棄する必要があります。

トランザクションオブジェクト

トランザクションはデータベースとの作業単位を表し、ほとんどのRDBMSはトランザクション機能をサポートしています。Hibernateのトランザクションは、基盤となるトランザクションマネージャーとトランザクション(JDBCまたはJTAから)によって処理されます。

これはオプションのオブジェクトであり、Hibernateアプリケーションはこのインターフェースを使用せず、代わりに独自のアプリケーションコードでトランザクションを管理することを選択できます。

クエリオブジェクト

クエリオブジェクトは、SQLまたはHibernateクエリ言語(HQL)文字列を使用して、データベースからデータを取得し、オブジェクトを作成します。クエリインスタンスは、クエリパラメータをバインドし、クエリによって返される結果の数を制限し、最後にクエリを実行するために使用されます。

基準オブジェクト

基準オブジェクトは、オブジェクト指向の基準クエリを作成および実行してオブジェクトを取得するために使用されます。