Hibernateは、Java環境からデータベースへのデータを永続化するために使用される永続化フレームワークです。
データベースにオブジェクトを永続化する場合、HibernateアーキテクチャがApplicationとHibernateの中間に永続オブジェクトを表示するのはなぜですか?
(ソース: viralpatel.net )
より明確にします。永続オブジェクトは、データベース内のテーブルの行を表す、作成するPOJOクラスのインスタンスです。 hibernate-doc によれば、データベース内のテーブルを表すPOJOクラスのインスタンスは3つの状態を通過し、そのうちの1つが永続的です。
POJOインスタンスがセッションスコープにある場合、それは永続的であると言われます。つまり、hibernateはそのオブジェクトに加えられた変更を検出し、セッションを閉じるかフラッシュするときにデータベースと同期します。
Hibernate.propertiesとXMLマッピングについて@Ken Chanは正しいです。 hibernate-doc を通過して、Hibernateのオブジェクトに関する詳細なイラストをご覧ください。
まず、Hibernateオブジェクトの3つの状態、つまりTransient、Persistent、Detachedを理解する必要があります。
一時的な状態:オブジェクトは、new演算子を使用してインスタンス化されたばかりで、データベースにオブジェクトの参照がない場合、つまりデータベース内の行を表していない場合、一時的な状態になります。
永続状態:オブジェクトは、データベース内に何らかの参照がある場合、つまりデータベース内の行を表し、識別子値が割り当てられている場合、永続状態になります。オブジェクトに何らかの変更が加えられた場合、Hibernateはそれらの変更を検出し、データベースにエフェクトが存在するため、名前がPersistentになります。これらの変更は、セッションが閉じられるときに行われます。永続オブジェクトはセッションスコープ内にあります。
切り離された状態:永続的で、セッションスコープ内になくなったオブジェクト。休止状態では、このオブジェクトに加えられた変更は検出されません。セッションに再び接続して、永続的にすることができます。
図によると、hibernate.properties
またはいくつかのXML mapping
を設定して、データベーステーブルをJava persistent object
と呼ばれるオブジェクトにマッピングします。
次にapplication
でpersistent object
を通常のJavaオブジェクトとして使用してその状態を操作します。persistent object
をhibernateに渡すことができます。次に、必要なSQLを生成してDBに発行し、persistent object
とその対応するデータベースレコードの状態を同期します。
通常、永続オブジェクトは、それを作成するプロセスの期間を超えてもメモリ内に存在するオブジェクトです。これらのオブジェクトはデータベースに保存されます。
永続オブジェクトは、POJOクラスのインスタンスにすぎません。 POJOクラスは、テーブルを表すクラスに他なりません。また、Hibernateは常にその永続オブジェクトを監視します。そのオブジェクトを操作するか、そのオブジェクトに変更を加えると、Hibernateはそのテーブル(POJOクラスによって表されるテーブル)で同じことを行います。これらはすべて休止状態で処理されます。並べ替えると、これはhibernateフレームワークの機能の1つです。
永続オブジェクトとは、データベース内に表現を持つプログラム内のクラスです。
NumberPlate、Fuelというプロパティを持つCarクラスがある場合の例。 NHibernate構成は、これをたとえばCarという名前のデータベース内のテーブルにマッピングし、Carクラスのプロパティに対応するこれらの列を持ちます。