1

エンティティ ID のリストがある場合、関連する渡された ID エンティティのコレクションの一連のフィールドを更新する必要があり、どのような場合に 1-st 経由の標準的な方法を使用する方がよいか迷っています。すべてのエンティティの読み込みと 2 番目: 関連する set() メソッドの呼び出し:

List<Long> ids = ....;
String par = "example";
List<User> users = USER_DAO.getUsers(ids);
for(User user : users) {
   user.setField(par);
}

または、次のような一括更新操作を実行する方法もあります。

Query query = em.createQuery("UPDATE User user SET user.field =:1? WHERE user.id IN : 2?");
int rowCount = query.executeUpdate();

その問題についての知識や調査はありますか? または、最初の方法が2番目の方法よりも優れている場合、または対?

すべての推奨事項を歓迎します, ありがとう, シメオン

4

1 に答える 1

1

2 番目の方法は、データベースで実行される SQL が少なくなるため、パフォーマンスが向上します。最初のケースでは、ユーザーごとに 2 つの SQL が実行されます (1 つは選択用、もう 1 つは更新用)。最初のケースでは、休止状態がSQLをオブジェクトにマップしている間、パフォーマンスが低下します。

于 2013-01-04T17:12:37.353 に答える