Hibernate は、Java 環境からデータベースにデータを永続化するために使用される永続化フレームワークです。
私はとても混乱しています..オブジェクトをデータベースに永続化する場合、Hibernate Architecture はなぜ下の図のアプリケーションと休止状態の中間に永続オブジェクトを描いているのでしょうか?
(出典:viralpatel.net)
Hibernate は、Java 環境からデータベースにデータを永続化するために使用される永続化フレームワークです。
私はとても混乱しています..オブジェクトをデータベースに永続化する場合、Hibernate Architecture はなぜ下の図のアプリケーションと休止状態の中間に永続オブジェクトを描いているのでしょうか?
(出典:viralpatel.net)
より明確にします。永続オブジェクトは、データベース内のテーブルの行を表す、作成する POJO クラスのインスタンスです。hibernate-docによると、データベース内のテーブルを表す POJO クラスのインスタンスは 3 つの状態を経ますが、そのうちの 1 つは永続的です。
POJO インスタンスがセッション スコープ内にある場合、それは永続的であると言われます。つまり、hibernate はそのオブジェクトに加えられた変更を検出し、セッションを閉じるかフラッシュするときにデータベースと同期します。
hibernate.properties と XML マッピングについては、@Ken Chan が正しいです。hibernate 内のオブジェクトの詳細については、hibernate-docを参照してください。
まず、Hibernate オブジェクトの 3 つの状態、つまり Transient、Persistent、Detached を理解する必要があります。
一時的な状態: オブジェクトが new 演算子を使用してインスタンス化されたばかりで、データベース内で参照されていない場合、つまりデータベース内の行を表していない場合、オブジェクトは一時的な状態です。
永続状態: オブジェクトがデータベースに何らかの参照を持っている場合、つまりオブジェクトがデータベース内の行を表し、識別子の値が割り当てられている場合、オブジェクトは永続状態にあります。オブジェクトに何らかの変更が加えられた場合、休止状態はそれらの変更を検出し、その効果がデータベースに存在するため、Persistent という名前が付けられています。これらの変更は、セッションが閉じられたときに行われます。永続オブジェクトはセッション スコープにあります。
切り離された状態: 永続的であり、もはやセッション スコープにないオブジェクト。休止状態は、このオブジェクトに加えられた変更を検出しません。セッションに再度接続して、再び永続的にすることができます。
図に従って、データベース テーブルを Java オブジェクトと呼ばれる Java オブジェクトにマップするhibernate.properties
ように構成します。XML mapping
persistent object
次に、を通常の Java オブジェクトとしてapplication
使用して、その状態を操作します。Hibernate にpersistent object
渡すことができます。その後、Hibernate は必要な SQL を生成して DB に発行し、その状態と対応するデータベース レコードを同期させます。意味がありますか?persistent object
persistent object
永続オブジェクトは、データベースに表現を持つプログラム内のクラスです。
プロパティNumberPlate、Fuelを持つCarクラスがある場合の例。NHibernate 構成はこれを、たとえば Car という名前のデータベース内のテーブルにマップし、これらの列が Car クラス プロパティに対応します。