首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hibernate mysql中的批处理插入/更新

问hibernate mysql中的批处理插入/更新
EN

Stack Overflow用户
提问于 2015-06-22 17:08:34
回答 1查看 1.6K关注 0票数 4

我们使用的是容器管理事务。应用服务器JBOSS AS7。我在hibernate配置文件中启用了以下属性

代码语言:javascript
复制
<property name="hibernate.connection.url">jdbc:mysql://localhost/test?rewriteBatchedStatements=true</property> 
<property name="hibernate.jdbc.batch_size" value="20"/> 
<property name="hibernate.order_inserts" value="true"/> 
<property name="hibernate.order_updates" value="true"/> 
<property name="hibernate.jdbc.batch_versioned_data" value="true"/>

并启用日志属性,如下所示

代码语言:javascript
复制
<logger category="org.hibernate.SQL">
    <level name="TRACE"/>
</logger>

我正在向数据库中插入10条记录。在hibernate.log中,我可以看到以下10个insert语句

代码语言:javascript
复制
org.hibernate.sql insert into test (name,value,date) values (?,?,?) org.hibernate.sql insert into test (name,value,date) values (?,?,?)  

批插入无效

EN

回答 1

Stack Overflow用户

发布于 2015-06-22 17:31:51

很可能您实际上是在使用批处理;只是Hibernate为每个实体实例打印了单独的sql。

要检查这一点,请为org.hibernate包启用调试日志级别(如果希望查看绑定变量,则为org.hibernate.type启用跟踪级别),然后检查日志中是否出现以下短语:

  • 重用批处理语句
  • 执行批大小

如果为执行的批处理大小打印大于1的数字,则使用批处理。

特定于MySQL,为了确保MySQL驱动程序重写insert语句,在连接url中启用profileSQL参数(如描述的这里 )。

注意:如果使用标识id生成器,则 JDBC批处理是已禁用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30985878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档