代码之家  ›  专栏  ›  技术社区  ›  Alain Cruz

我应该在Hibernate中批量插入/更新吗?

  •  0
  • Alain Cruz  · 技术社区  · 6 年前

    EntityHeader entityHeader = entityHeaderService.findById(id);
    for(EntityDetail entityDetail : entityHeader.getDetails()) {
       for(Entity entity : entityDetail.getEntities()) {
           entity.setState(true);
           entityService.update(entity);
       }
    } 
    

    这是一个例子,我们在另一个方法中也有一个类似的例子,但是使用insert代替。这些方法可以在一个事务中更新或插入最多2k或3k个实体。所以我的问题是,我们应该开始使用批处理操作,还是实体的数量不够大而不必担心?另外,如果使用批处理操作,它的性能会更好吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Zeromus    6 年前

    在优化事物时,总是问自己是否值得花时间,例如:

    1. 性能增益是足够高还是可以忽略不计?

    不管怎样,一个事务中的~3k个实体听起来并不坏,但是即使使用这些数字,jdbc批处理也有好处(同样也非常有用) easy 实现)。

    很难说你什么时候应该担心 OutOfMemoryException