java - hibernate的批量插入机制可以用1个插入查询插入多条记录吗
问题描述
我正在使用 Hibernate 插入同一类的多个对象。问题是 Hibernate 为每个对象生成 1 个插入查询。相反,我需要 1 个包含所有插入值的查询。
我有用于在客户表(MySql)中插入/更新客户类对象的代码,如下所示:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
List<Customer> customers;//this list list will contain all the customers
int i=0;
while ( customers.hasNext() ) {
Customer customer = customers.next();
session.saveOrUpdate(customer);
if ( i % 50 == 0 ) { //50, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
i++;
}
tx.commit();
session.close();
上面的代码使用了 Hibernate 的批量插入/更新机制。
问题是如果我有 5 个客户,那么它会产生 5 个不同的插入查询(我可以通过在属性中将 show_sql 设置为 true 在日志中看到它)。像这样的东西:
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(1,'Doe',10);
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(2,'Eoe',10);
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(3,'Foe',10);
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(4,'Joe',10);
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(5,'Koe',10);
相反,我想要一个包含所有语句的插入查询。像这样的东西:
INSERT INTO acct_doc_header (pk, name, age)
VALUES
(1,'Doe',10),
(2,'Eoe',10),
(3,'Foe',10),
(4,'Joe',10),
(5,'Koe',10);
这可以通过 Hibernate 以某种方式实现吗?我认为它应该得到Hibernate的支持。我搜索了各种文章,但没有运气。
如果有帮助,我将在我的应用程序中使用 Hibernate 5.2.16 和 Spring 4.3.15。
解决方案
推荐阅读
- python - Python Scrapy text() 函数无法获取空的 td 元素
- mongodb - 使用 Mongoose 初始化和保存后,MongoDB 文档中缺少属性
- jspdf-autotable - 正文内容中的 HTML JSPDF AUTOTABLE
- css - SCSS 是带有“一些小例外”的 CSS 的超集——它们是什么?
- python - 使用掩码在向量化方程 numpy 之间进行选择
- php - class_existst 返回 false WP 插件开发
- java - 如何让任务等待另一个并发
- javascript - 尝试将 iOS 本机框架移植到 NativeScript
- google-tag-manager - 一个页面上有多个容器的 Google 跟踪代码管理器问题
- kotlin - BottomAppBar + NavigationView + FloatingActionButton + 导航组件 KOTLIN