Hibernate批处理生成正确的语句吗?

时间:2018-02-24 15:13:42

标签: hibernate

我正在使用hibernate并尝试了解我的批处理配置是否按预期工作。

我在日志中的预期是对插入语句具有以下类型的语句:

insert into Table(field1,field2)
values (?,?), (?,?) ... REPEATED BATCH SIZE TIMES  ... (?,?)

但我得到了:

insert into Table(field1,field2)
values (?,?)
insert into Table(field1,field2)
values (?,?)
... N INSERTS, WHERE N = BATCH SIZE
Executing batch size: BATCH_SIZE

因此,批处理似乎已启用且正在运行,但生成的查询似乎与预期不同。

这是正确的行为吗?

1 个答案:

答案 0 :(得分:0)

是的,这是正确的行为。

批处理不包含生成巨型查询。它包括多次添加相同的插入语句into a batch,使用不同的参数,然后添加到execute the batch。这允许仍然使用相同的预准备语句,并且仍然允许对数据库进行单次往返。