【发布时间】:2013-06-18 16:05:22
【问题描述】:
我正在尝试使用休眠批量插入从文件中插入每 100 条记录。如果我将逻辑包装在事务中,它是否会按预期工作,例如,假设我正在从 300 条记录中创建 3 批并包装事务内部的逻辑,如果第三批出现问题,则事务将回滚第一批和第二批。
【问题讨论】:
我正在尝试使用休眠批量插入从文件中插入每 100 条记录。如果我将逻辑包装在事务中,它是否会按预期工作,例如,假设我正在从 300 条记录中创建 3 批并包装事务内部的逻辑,如果第三批出现问题,则事务将回滚第一批和第二批。
【问题讨论】:
始终将您的批次包装在事务中。如果您为每个事务批处理 100 个插入,那么如果一切正常,则将提交所有 100 个插入。我还建议您使用无状态会话来加快批量插入。我强烈推荐你阅读 Hibernate 文档的Batch processing 教程。
【讨论】:
简而言之:它将按预期工作。
Hibernate 没有限制每个批量插入都需要在单独的事务中。如果您在一个事务中执行多个批量插入,它们将作为一个整体提交/回滚。
(当然,如果你有嵌套事务或者在事务中使用里程碑,那就另当别论了。)
【讨论】: