Hibernate-architecture

提供:Dev Guides
移動先:案内検索

Hibernate-アーキテクチャ

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

以下は、Hibernate Application Architectureの非常に高レベルのビューです。

Hibernate High Level View

以下は、重要なコアクラスを備えたHibernate Application Architectureの詳細ビューです。

Hibernateアーキテクチャ

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

次のセクションでは、Hibernate Application Architectureに含まれる各クラスオブジェクトについて簡単に説明します。

構成オブジェクト

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

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

  • データベース接続-これは、Hibernateでサポートされている1つ以上の構成ファイルを介して処理されます。 これらのファイルは hibernate.properties および hibernate.cfg.xml です。
  • クラスマッピングのセットアップ-このコンポーネントは、Javaクラスとデータベーステーブル間の接続を作成します。

SessionFactoryオブジェクト

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

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

セッションオブジェクト

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

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

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

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

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

クエリオブジェクト

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

基準オブジェクト

Criteriaオブジェクトを使用して、オブジェクト指向の条件クエリを作成および実行し、オブジェクトを取得します。