2016-07-01 3 views
1

休止状態sessionには、オブジェクト全体をロードせずにプロキシを取得する方法があります。これは、親エンティティと子エンティティをリンクする必要がある場合によく使用されます。しかし、プロキシの更新はどうですか?たとえば:オブジェクト全体をロードせずにSession.loadを介して1つのエンティティフィールドのみを更新または設定できますか?

MyEntity entity = session.load(MyEntity.class, 1l); 
entity.setName("newName"); 
session.saveOrUpdate(entity); 

にのみname列はエンティティ全体をロードせずid=1lとエンティティのために更新されることを、ここで期待されています。本当ですか?このコードはUPDATE MyEntity SET name = 'newName' where id = 1のようなSQL実行と同じかどうか

答えて

1

いいえ、これはデフォルトでは等しくありません。しかし、それはHibernateで行うことが可能であり、動的更新と呼ばれています。 (:それは非推奨者注)

をしかし、両方のケースでは、あなたが最初にあなたのエンティティを取得する必要があること、1のように、いくつかの制限がありますあなたはDynamicUpdate注釈を介して、またはEntity注釈のプロパティを経由して、それを有効にすることができます。

インターネット経由でいくつかの例がありますが、hereの1つです。ここに動的更新のパフォーマンスに関する1つのrelated articleともう1つの追加番号があります(SO question)。

関連する問題