hibernate批量插入
时间: 2023-09-04 14:15:51 浏览: 111
Hibernate提供了多种方式来实现批量插入,以下是其中一种方法:
1. 利用Session的doWork方法执行JDBC操作,可以使用JDBC的批量操作API实现批量插入。
```java
Session session = sessionFactory.getCurrentSession();
session.doWork(connection -> {
try (PreparedStatement statement = connection.prepareStatement("INSERT INTO table_name(column1, column2) VALUES(?,?)")) {
for (int i = 0; i < dataList.size(); i++) {
statement.setString(1, dataList.get(i).getColumn1());
statement.setString(2, dataList.get(i).getColumn2());
statement.addBatch();
if (i % batchSize == 0 || i == dataList.size() - 1) {
statement.executeBatch();
}
}
}
});
```
2. 使用Hibernate的批量插入API来实现批量插入,需要设置`hibernate.jdbc.batch_size`参数,以及在事务中执行插入操作。
```java
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
for (int i = 0; i < dataList.size(); i++) {
session.save(dataList.get(i));
if (i % batchSize == 0 || i == dataList.size() - 1) {
session.flush();
session.clear();
}
}
tx.commit();
```
需要注意的是,这种方法适用于插入大量数据,但是需要在事务中执行,因此可能会对性能产生影响。同时,也需要根据具体情况调整批量大小和事务大小。
阅读全文