当前位置: 首页 > 面试题库 >

如何在hibernate中启用批量插入?

东郭海阳
2023-03-14
问题内容

使用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基本上没有。

我是否缺少设置?


问题答案:

原来在这种情况下缺少的是:

<property name="order_inserts">true</property>

现在我明白了

 [...] 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,另请参阅



 类似资料:
  • 问题内容: 使用休眠时,当我尝试使用以下方式启用批量插入时 我得到以下输出: 然后这个: 基本上没有。 我是否缺少设置? 问题答案: 原来这种情况下缺少的是: 参考:https : //forum.hibernate.org/viewtopic.php ? p =2374413,https : //stackoverflow.com/a/5240930/32453 或可能是hibernate.or

  • 我想在交叉表中插入大量的实体。为此,我想启用Hibernate的批处理插入选项,这样每次插入将不是添加1行,而是一次添加20或50行。 我正在尝试重现Hibernate教程的结果。我创建了一个测试函数,它将尝试插入30个客户,就像在示例中一样: Customer类没有生成的ID。 在收到Vlad Mihalcea的回答后,我意识到是的,事实上批处理语句是有效的,至少在hibernate和jdbc级

  • 问题内容: 我想使用Hibernate Native SQL在数据库中插入记录。代码如下 上面的代码工作正常,我认为这不是最好的方法。如果有的话,请给我另一种可能的方法。谢谢 问题答案: Hibernate具有批处理功能。但是在以上情况下,我使用的是Native SQL,根据我的观察,hibernate批处理对于Native SQL并不是很有效。是的,可以肯定的是它可以避免内存不足错误,但不会提高

  • 问题内容: 我在使用Mongoskin在Node上执行批量插入(MongoDB 2.6+)时遇到麻烦。 上面的代码给出以下警告/错误: 是否可以使用Mongoskin执行无序批量操作?如果是这样,我在做什么错? 问题答案: 您可以执行此操作,但是您需要更改调用约定才能执行此操作,因为只有“回调”形式实际上会返回可以从其调用方法的集合对象。您认为此用法的方式也存在一些差异: 因此,实际的“批量”方法

  • 问题内容: 我有许多记录需要输入到表中。在查询中执行此操作的最佳方法是什么?我是否应该进行循环并在每次迭代中插入一条记录?或者,还有更好的方法? 问题答案: 从MySQL手册 使用VALUES语法的INSERT语句可以插入多行。为此,请包括多个列值列表,每个列值括在括号内并用逗号分隔。例:

  • 问题内容: 我需要从每日CSV文件中消耗大量数据。CSV包含约12万条记录。使用hibernate模式时,这会减慢爬行速度。基本上,当使用saveOrUpdate()时,hibernate似乎在每个单独的INSERT(或UPDATE)之前执行SELECT。对于使用saveOrUpdate()持久存储的每个实例,在实际的INSERT或UPDATE之前发出SELECT。我能理解为什么要这样做,但是在进