1

Hibernate でオブジェクトを遅延ロードする (id のみをロードする) 方法はありますか?

巨大なデータベースを同期する同期コードを書いています。私たちはそれを最適化しようとしていますが、現在のボトルネックは、低速の接続を介して多くの不要なフィールドをロードするハイバネートです。例えば:

Person p = createPersonFromOtherDbData(params);
Address a = loadAddressFromLocalDB(p.getAddressParams());
p.setAddress(a);
session.insert(p);

したがって、基本的には、その「Address」オブジェクトの「id」を取得して、それを新しい「Person」オブジェクトに入れるだけで十分です。ただし、休止状態はAddress オブジェクトから多くの不要なフィールド (同期のコンテキストでは不要ですが、アプリケーションの残りの部分では必要) をロードします。セッションがステートレスであることを考えると、コードのこの部分を最適化する方法はありますか?

アディード:

この質問は、ID だけでエンティティ関係を設定できますか? に関連していると思います。、しかし、それにも特定の答えはありません。

4

2 に答える 2

2

Session.load()アドレスがセッション キャッシュにまだロードされていない場合、id をラップするアドレス プロキシを返すだけです。

于 2013-10-29T08:02:21.127 に答える
0

projectionデータベースから特定のフィールドを取得するために使用できます。一例を次に示します。

List results = session.createCriteria(Employee.class)
    .setProjection( Property.forName("name"))
    .list();
于 2013-10-29T07:59:28.560 に答える