java如何在hibernate中启用批插入?
在hibernate中,当我尝试使用
<property name="jdbc.batch_size">50</property>
我得到以下输出:
[...] cfg.SettingsFactory INFO - JDBC batch updates for versioned data: disabled
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: disabled
然后这个:
[...] jdbc.AbstractBatcher DEBUG - Executing batch size: 1
基本上不超过batch size: 1
我是不是错过了一个场景
# 1 楼答案
要为INSERT和UPDATE语句启用批处理,需要设置以下所有Hibernate属性:
如果可以使用
SEQUENCE
,则不应使用IDENTITY
实体标识符生成器,因为它禁用批获取如果无法使用
SEQUENCE
(例如MySQL),请尝试使用单独的机制来启用批插入(例如JDBC),而不是使用TABLE
生成器,该生成器不可扩展且具有高性能代价# 2 楼答案
结果表明,在本例中缺少的是:
参考:https://forum.hibernate.org/viewtopic.php?p=2374413,https://stackoverflow.com/a/5240930/32453 或者可能冬眠。订单插入
现在我明白了
更频繁(任何大于1的值基本上意味着它成功地进行了批量插入)
冬眠。jdbc。批处理版本的数据也可能有用
jdbc:mysql://localhost:3306/batch?rewriteBatchedStatements=true类型连接字符串也可能以某种方式相关
https://forum.hibernate.org/viewtopic.php?p=2374413另见 Hibernate batch size confusion