gpt4 book ai didi

mysql - 在hibernate mysql中批量插入/更新

转载 作者:可可西里 更新时间:2023-11-01 08:29:23 25 4
gpt4 key购买 nike

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

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

并如下启用日志记录属性

<logger category="org.hibernate.SQL">
<level name="TRACE"/>
</logger>

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

org.hibernate.sql insert into test (name,value,date) values (?,?,?) org.hibernate.sql insert into test (name,value,date) values (?,?,?)  

批量插入无效

最佳答案

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

要检查这一点,请为 org.hibernate 包启用 DEBUG 日志级别(如果您想查看绑定(bind)变量,则为 org.hibernate.type 启用 TRACE 级别),然后查看日志中是否出现以下语句:

  • 复用批处理语句

  • 执行批量大小

如果打印的执行批处理大小大于 1,则说明您正在使用批处理。

特定于 MySQL,要确保 MySQL 驱动程序重写插入语句,请在连接 url 中启用 profileSQL 参数,如所述here .

注意:JDBC 批处理是 disabled如果使用 IDENTITY id 生成器。

关于mysql - 在hibernate mysql中批量插入/更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com