我目前正在使用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()
}
这确实可以,但是不是很干净。
使用条件构建器批量插入的正确方法是什么?
答案 0 :(得分:0)
第一个选项是遍历帖子并刷新一批更新并释放内存。 这里的最后一个答案: 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