【问题标题】:Bulk insert with JPA criteria builder使用 JPA 标准生成器批量插入
【发布时间】:2019-06-01 15:06:04
【问题描述】:

我目前是一个带有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()
 }

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

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

【问题讨论】:

    标签: postgresql hibernate spring-boot jpa jpa-criteria


    【解决方案1】:

    第一个选项是遍历帖子并刷新一批更新并释放内存。 这里的最后一个答案: Batch inserts using JPA EntityManager 表示 JPA 本身没有任何批处理设置。但是,有一些依赖于实现的设置。 Here is an example for hibernate。 请参阅13.2。批量更新

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

    【讨论】:

    • 您好,您提供给我的答案适用于 JPA 存储库。我没有任何存储库(实现 JPA 存储库接口的类),而是使用实体管理器。您能否详细说明我如何将建议的场景应用到我的案例中?
    猜你喜欢
    • 2012-10-28
    • 2010-09-09
    • 1970-01-01
    • 2018-07-23
    • 2021-03-25
    • 2011-02-15
    • 2021-11-27
    • 2020-11-30
    • 2010-10-01
    相关资源
    最近更新 更多