如何在hibernate中启用批量插入?
使用hibernate,当我尝试启用批量插入时
50
我得到以下输出:
[...] 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
基本上是batch size: 1
。
我错过了一个设置吗?
要为INSERT和UPDATE语句启用批处理 ,您需要设置以下所有Hibernate属性:
30 true true true
如果您可以使用SEQUENCE,那么您不应该使用IDENTITY生成器,因为它会禁用批量提取 。
如果您不能使用SEQUENCE(例如MySQL),那么尝试使用单独的机制来启用批量插入(例如jOOQ),而不是使用不能扩展且具有高性能损失的TABLE生成器 。
原来在这个案例中缺少的是:
true
参考: https : //forum.hibernate.org/viewtopic.php ? p = 2374413 , https : //stackoverflow.com/a/5240930/32453或者可能是hibernate.order_inserts。
现在我明白了
[...] cfg.SettingsFactory INFO - Order SQL inserts for batching: enabled ... [...] Executing batch size: 2
更频繁(任何大于1的东西基本上意味着它成功地进行批量插入)。
hibernate.jdbc.batch_versioned_data也可能有用。
jdbc:mysql:// localhost:3306 / batch?rewriteBatchedStatements = true类型连接字符串也可能以某种方式相关。
https://forum.hibernate.org/viewtopic.php?p=2374413还看到Hibernate批量大小混乱
- 从@ OneToMany-association中删除子项:CascadeType.ALL + orphanRemoval = true not working
- Spring + Hibernate的多租户:“SessionFactory配置为多租户,但没有指定租户标识符”
- Java持久性:转换为Query.getResultList()的结果?
- onSave()(用于使用Hibernate / Spring Data Repositories保存的任何实体)
- 如何在Hibernate HQL中使用Oracle的regexp_like?
- 为什么spring / hibernate只读数据库事务比read-write运行得慢?
- JPA GenerationType.AUTO没有考虑具有自动增量的列
- JPA + Hibernate – 如何在不获取该实体的情况下获取子实体的FK?
- 无法通过使用hibernate的存储过程获取多个Table实体