我需要使用Hibernate更新MySQL数据库中的多行。我已经使用JDBC完成了这一点,我们支持批量查询。我想在hibernate里有这样的东西。
Hibernate支持批量查询吗?
jdbc中的批处理查询示例:
// Create statement object
Statement stmt = conn.createStatement();
String SQL = "INSERT INTO Employees (id, first, last, age) " +
"VALUES(200,'Zia', 'Ali', 30)";
// Add above SQL statement in the batch.
stmt.addBatch(SQL);
// Create one more SQL statement
String SQL = "INSERT INTO Employees (id, first, last, age) " +
"VALUES(201,'Raj', 'Kumar', 35)";
// Add above SQL statement in the batch.
stmt.addBatch(SQL);
int[] count = stmt.executeBatch();
现在,当我们发出stmt.executeBatch调用时,两个SQL查询将在一个jdbc往返中执行。
1条答案
按热度按时间6pp0gazn1#
您可以查看Hibernate文档。Hibernate有一些配置属性来控制(或禁用)JDBC的使用。
INSERT
,并且您的实体没有使用标识生成器,那么Hibernate将透明地使用JDBC对象。配置Hibernate
hibernate.jdbc.batch_size
属性定义了Hibernate在请求驱动程序执行批处理之前将批处理的语句数量。零或负数将禁用该按钮。您可以定义一个全局配置,例如:在
persistence.xml
中,或者定义特定于会话的配置。要配置会话,可以使用如下代码使用JDBC接口
如前所述,Hibernate透明地调用JDBC对象。如果你想控制这个进程,你可以在会话中使用
flush()
和clear()
方法。以下是文档中的一个示例。当插入次数达到
batchSize
值时,它调用flush()
和clear()
。如果batchSize
小于或等于配置的hibernate.jdbc.batch_size
,则它可以有效工作。