如何使用hibernate在单个表中插入多个记录而不使用循环语句

时间:2017-10-24 12:45:12

标签: hibernate

如何使用hibernate在单个表中插入多个记录而不使用循环语句

当我尝试使用hibernate merge在单个表中插入多个记录时,我只获得一个记录插入。插入多条记录的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

您需要意识到,多个em.insert()调用不需要导致多个SQL查询。

Hibernate 3.x及更高版本

要启用批量插入,需要应用某些配置限制:

  1. hibernate.jdbc.batch_size设置为10到50之间的整数。这样可以启用JDBC批处理。从技术上讲,它的工作原理是,您的插入/合并将转换为批量插入而不是单个插入。
  2. hibernate.order_insertshibernate.order_updates设为true。这有助于在使用级联时进行批处理。
  3. 确保您未在​​实体ID上使用IDENTITY标识符生成器。这样可以禁用批量插入。
  4. 伟大的Vlad Mihalcea可以在blog找到有关Hibernate性能的更多信息。

    Hibernate 5.2及更高版本

    Hibernate 5.2允许直接在持久化上下文级别配置批量大小:

    entityManager.setJdbcBatchSize(10);

    再次,关于弗拉德blog的更多细节。