40

Hibernate は、Java 環境からデータベースにデータを永続化するために使用される永続化フレームワークです。

私はとても混乱しています..オブジェクトをデータベースに永続化する場合、Hibernate Architecture はなぜ下の図のアプリケーションと休止状態の中間に永続オブジェクトを描いているのでしょうか?

忙しい猫
(出典:viralpatel.net

4

6 に答える 6

37

より明確にします。永続オブジェクトは、データベース内のテーブルの行を表す、作成する POJO クラスのインスタンスです。hibernate-docによると、データベース内のテーブルを表す POJO クラスのインスタンスは 3 つの状態を経ますが、そのうちの 1 つは永続的です。

POJO インスタンスがセッション スコープ内にある場合、それは永続的であると言われます。つまり、hibernate はそのオブジェクトに加えられた変更を検出し、セッションを閉じるかフラッシュするときにデータベースと同期します。

hibernate.properties と XML マッピングについては、@Ken Chan が正しいです。hibernate 内のオブジェクトの詳細については、hibernate-docを参照してください。

于 2012-12-26T05:29:04.930 に答える
33

まず、Hibernate オブジェクトの 3 つの状態、つまり Transient、Persistent、Detached を理解する必要があります。

一時的な状態: オブジェクトが new 演算子を使用してインスタンス化されたばかりで、データベース内で参照されていない場合、つまりデータベース内の行を表していない場合、オブジェクトは一時的な状態です。

永続状態: オブジェクトがデータベースに何らかの参照を持っている場合、つまりオブジェクトがデータベース内の行を表し、識別子の値が割り当てられている場合、オブジェクトは永続状態にあります。オブジェクトに何らかの変更が加えられた場合、休止状態はそれらの変更を検出し、その効果がデータベースに存在するため、Persistent という名前が付けられています。これらの変更は、セッションが閉じられたときに行われます。永続オブジェクトはセッション スコープにあります。

切り離された状態: 永続的であり、もはやセッション スコープにないオブジェクト。休止状態は、このオブジェクトに加えられた変更を検出しません。セッションに再度接続して、再び永続的にすることができます。

于 2016-09-08T05:18:02.427 に答える
8

図に従って、データベース テーブルを Java オブジェクトと呼ばれる Java オブジェクトにマップするhibernate.propertiesように構成します。XML mappingpersistent object

次に、を通常の Java オブジェクトとしてapplication使用して、その状態を操作します。Hibernate にpersistent object渡すことができます。その後、Hibernate は必要な SQL を生成して DB に発行し、その状態と対応するデータベース レコードを同期させます。意味がありますか?persistent objectpersistent object

于 2012-12-24T19:55:53.347 に答える
2

永続オブジェクトは、データベースに表現を持つプログラム内のクラスです。

プロパティNumberPlate、Fuelを持つCarクラスがある場合の例。NHibernate 構成はこれを、たとえば Car という名前のデータベース内のテーブルにマップし、これらの列が Car クラス プロパティに対応します。

于 2012-12-24T19:44:06.713 に答える