Массовая вставка с построителем критериев JPA

Я в настоящее время проект весенней загрузки с 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 ответ

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

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

Другие вопросы по тегам