いくつかの知識がある休止状態を使用して既存のアプリケーションを理解しようとしています。このアプリケーションでは、データベース スキーマが作成されており、DB スキーマからクラスが自動生成されています。
DB 内の 2 つのテーブルの例を見てみましょう。
PERSON(id, firstname, surname)
OBJECT(id, owner_id, description)
表OBJECT
でowner_id
は、 は への外部キーになりPERSON.id
ます。
生成されたクラスは、おおよそ次のようになります。
class Person {
// ok for the following
int id; // with getters and setters
String firstname; // with getters and setters
String surname; // with getters and setters
// dunno why the following ?
Set objects = new HashSet(0);
Set getObjects() { return this.objects; }
void setObjects(Set objects) this.objects = objects; }
}
class Object {
int id; // with getters and setters
Person owner; // with getters and setters
String description; // with getters and setters
}
まず、生成されたクラスで所有されているオブジェクトのセットへの参照がある理由がわかりませんPerson
。次に、 HQL クエリを介してObject
またはを取得した場合、このメンバーは完全にロードされていますか? それを確実にするには、どのように休止状態を設定する必要がありますか?List<Object>
Person
Object
私のアプリケーションでは、別の実行可能ファイルとして実行されている休止状態セッションと、休止状態アプリと通信していくつかの永続オブジェクトを送信するように要求する別のデポートされたアプリケーションがあるため、私は尋ねています。を取得できますObject
が、作成したこのオブジェクトで にobject.getPerson().getFirstname()
遭遇すると、org.hibernate.LazyInitializationException: could not initialize proxy - no Session