使用 JPA 标准生成器批量插入
Posted
技术标签:
【中文标题】使用 JPA 标准生成器批量插入【英文标题】:Bulk insert with JPA criteria builder 【发布时间】: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()
这确实有效,但不是很干净。
使用标准构建器进行批量插入的正确方法是什么?
【问题讨论】:
【参考方案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 存储库接口的类),而是使用实体管理器。您能否详细说明我如何将建议的场景应用到我的案例中?以上是关于使用 JPA 标准生成器批量插入的主要内容,如果未能解决你的问题,请参考以下文章