【发布时间】:2011-01-19 04:14:43
【问题描述】:
我无法让 Hibernate 在 MySQL 上执行批量插入。
我正在使用 Hibernate 3.3 和 MySQL 5.1
在高层次上,这就是正在发生的事情:
@Transactional
public Set<Long> doUpdate(Project project, IRepository externalSource) {
List<IEntity> entities = externalSource.loadEntites();
buildEntities(entities, project);
persistEntities(project);
}
public void persistEntities(Project project) {
projectDAO.update(project);
}
这会产生 n 个日志条目(每行 1 个),如下所示:
Hibernate: 插入到 ProjectEntity (name, parent_id, 路径、project_id、状态、类型)值 (?, ?, ?, ?, ?, ?)
我希望看到这个被批处理,所以更新的性能更高。此例程可能会导致生成数万行,而每行的 db 行程是一个杀手。
为什么不进行批处理? (据我了解,hibernate 在适当的情况下应该默认批量插入)。
【问题讨论】: