Массовая вставка с построителем критериев JPA - PullRequest
0 голосов
/ 07 января 2019

Я в настоящее время проект весенней загрузки с postgres и hibernate и имел следующие функции:

  private fun savePost(post: Post): Post = entityManager.merge(post)

  private fun savePosts(posts: List<Post>) = 
       posts.forEach { save(post) }

Я хотел избежать последовательной вставки, поэтому теперь у меня есть необработанный запрос:

 private fun savePosts(posts: List<Post>) {
      val queryText: String = createTextQueryFromList(posts)
      val query = entityManager.createNativeQuery(queryText)
      query.executeUpdate()
 }

Это работает, но не очень чисто.

Как правильно выполнить массовую вставку с использованием построителя критериев?

1 Ответ

0 голосов
/ 07 января 2019

Первый вариант - перебирать сообщения и сбрасывать пакет обновлений и освобождать память. Последний ответ здесь: Пакетная вставка с использованием JPA EntityManager говорит, что JPA сама по себе не имеет никаких настроек для пакетной обработки. Однако существуют некоторые настройки, зависящие от реализации. Вот пример для спящего режима . См. 13.2. Пакетные обновления

Другой вариант будет попробовать session.doWork() Смотрите пример https://keyurj.blogspot.com/2012/12/dowork-in-hibernate.html

...