誰でもコレクションのロードや多対1のアソシエーションのロードを防ぐ方法を知っていますか?休止状態でのプロパティ/コレクションのロードを無効にする
私はオブジェクトをロードする必要があるユースケースがありますが、呼び出し側のプログラムは特定のプロパティがロードされているかどうかを判断できます。コレクションの一部についても同じことが起こります。特定の行をフェッチする必要があります。
ドメインクラス:
public class SomeClass {
private SomeClass parent;
private Set<OtherClass> collection;
}
public class OtherClass {
private Date startDate;
private Date endDate;
}
public class Dao {
public SomeClass loadClass(long id, boolean parents, boolean historicalData) {
// load SomeClass
// if parents == true, load parent, otherwise leave <null>
// if historicalData == false, load OtherClass where endDate == <null>
}
}
私は2つのソリューションを考えているが、基準またはクエリとその可能な場合、私は今にONT。
解決策1は、SomeClassからOtherClassへのアソシエーションと、Hibernate構成における親子関係を行い、コード内でアサーションをロードしません。
解決策2は、特殊なケースに対応して異なるエンティティ名で異なるマッピングを定義することです。
この場合、呼び出し側は他のJVMまたはトランザクション内にある可能性があるため、セッションは閉じられているため、遅延ロードは実際のオプションではありません。
私はこの解決策を考えています。それを文書化するか、またはヌルにロードされないプロパティーを手動で設定するだけです。 – Salandur