java可以使用hibernate的批插入机制仅使用一个插入查询插入多个记录
我正在使用Hibernate插入同一类的多个对象。问题是Hibernate为每个对象生成一个插入查询。相反,我需要一个包含所有插入值的查询
我的代码用于在Customer表(MySql)中插入/更新Customer类的对象,如下所示:
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查询。大概是这样的:
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
共 (0) 个答案