我使用的是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 个日志条目(每行一个)如下所示:
我希望看到这个操作被批处理,以便更新更高效。这个例程可能会生成成千上万行,而每行都需要与数据库交互是一种性能杀手。Hibernate: insert into ProjectEntity (name, parent_id, path, project_id, state, type) values (?, ?, ?, ?, ?, ?)
为什么没有进行批处理呢?(我的理解是,在适当的情况下,Hibernate 应该默认使用批量插入)。