我正在使用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
因此,批处理似乎已启用且正在运行,但生成的查询似乎与预期不同。
这是正确的行为吗?
答案 0 :(得分:0)
批处理不包含生成巨型查询。它包括多次添加相同的插入语句into a batch,使用不同的参数,然后添加到execute the batch。这允许仍然使用相同的预准备语句,并且仍然允许对数据库进行单次往返。