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

如何在休眠中启用批量插入?

殳勇
2023-03-14
问题内容

使用休眠时,当我尝试使用以下方式启用批量插入时

  <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>

参考: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批量大小混淆



 类似资料:
  • 问题内容: 这是我在阅读有关jpa批量插入的几个主题之后创建的简单示例,我有2个持久对象User和Site。一个用户可以拥有多个站点,因此我们在这里有一对多的关系。假设我要创建用户并将多个站点创建/链接到用户帐户。考虑到我愿意为Site对象使用批量插入,代码如下所示。 但是,当我运行此代码时(我将hibernate方式用作jpa实现提供程序),我看到以下sql输出: 所以,我的意思是“真实的”批量

  • 问题内容: 使用hibernate时,当我尝试使用以下方式启用批量插入时 我得到以下输出: 然后这个: 基本上没有。 我是否缺少设置? 问题答案: 原来在这种情况下缺少的是: 现在我明白了 频繁得多(任何大于1的值基本上都意味着它成功完成了批量插入)。 hibernate.jdbc.batch_versioned_data也可能有用。 jdbc:mysql:// localhost:3306 /

  • 问题内容: 我有一个基本上从表中返回全部数据的函数。我该如何实现批量提取,以便一次将批量返回60,000行返回数据。 以下逻辑适用于这种情况吗? http://javainnovations.blogspot.com/2008/07/batch-insertion-in- hibernate.html 问题答案: 在中,使用参数设置批量大小

  • 问题内容: 该程序一个接一个地执行数以万计的连续插入。我以前从未使用过Hibernate。我的性能变得非常慢(如果我只是手动连接并执行SQL,则速度会提高10-12倍。根据许多休眠教程,我的batch_size设置为50。 这是单个插入的日志-也许您可以帮助我准确了解正在发生的事情: 问题答案: 当您调用时,hibernate将生成一个INSERT SQL。该INSERT SQL将附加在刷新期间(

  • 问题内容: 我有一个dao,它基本上使用hibernate将记录插入到一​​个表中,该dao用标记为注释,并且我有一个服务,该服务会生成其他一些东西,然后调用我的dao。我的服务也标注了使用。 我叫服务循环。我在dao上的插入内容是否可以批量或一个接一个地工作?我如何确定它们可以批量工作?hibernateTransaction Manager是否管理批处理插入? 我正在使用Oracle DB。

  • 问题内容: 在编写批处理文件以自动执行Windows框上的某些操作时,我需要将其执行暂停几秒钟(通常在测试/等待循环中,等待进程启动)。当时,我能找到的最佳解决方案是使用ping(我不骗你)来达到预期的效果。我已经找到了更好的写了它在这里,它描述了一个可调用“wait.bat”,实现如下: 然后,你可以在自己的批处理文件中包含对wait.bat的调用,传递进入睡眠的秒数。 显然Windows 20