JPA - Пакетное / массовое обновление - Какой подход лучше?

Я обнаружил, что JPA не поддерживает следующее обновление:

Update Person p set p.name = :name_1 where p.id = :id_1,
                    p.name = :name_2 where p.id = :id_2,
                    p.name = :name_3 where p.id = :id_3
                    .... 
                 // It could go on, depending on the size of the input. Could be in 100s

Итак, у меня есть два варианта:

Опция 1:

Query q = em.createQuery("Update Person p set p.name = :name where p.id = :id");

For ( int x=0; PersonsList.length; x++ ) {
      // add name and id parameters
      em.executeUpdate(); 
}

Вопросов:

Это все, что нужно для пакетного обновления? Что-нибудь еще, что я должен добавить? Я поставилhibernate.jdbc.batch_size", "20"Оптимистическая блокировка включена здесь по умолчанию? (У меня нет @Version в моей сущности, хотя)Что мне нужно сделать, чтобы применить оптимистическую блокировку, если не @Version?

Вариант 2:

Создайте один запрос, используя либоSelect Case синтаксис или сCriteria API

Вопросов:

Пакетирование все еще происходит здесь? (В одном большом запросе)Это лучше, чем первый подход с точки зрения производительности?Каков рекомендуемый подход из этих двух вариантов? Любой другой лучший подход?

Ответы на вопрос(3)

Ваш ответ на вопрос