2

我目前是一个带有 postgres 和 hibernate 的 spring boot 项目,并具有以下功能:

  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()
 }

这确实有效,但不是很干净。

使用标准构建器进行批量插入的正确方法是什么?

4

1 回答 1

0

第一种选择是遍历帖子并刷新一批更新并释放内存。这里的最后一个答案: 使用 JPA EntityManager 进行批量插入说 JPA 本身没有任何批处理设置。但是,有一些依赖于实现的设置。这是 hibernate 的示例。见13.2。批量更新

另一种选择是尝试session.doWork() 查看示例https://keyurj.blogspot.com/2012/12/dowork-in-hibernate.html

于 2019-01-07T00:42:02.383 回答