您现在的位置是:首页 >

批量处理单元格 Hibernate的批量处理[3]

火烧 2022-05-23 21:19:46 1088
Hi er ate的批量处理[3]   设置hi er ate jd c atch_ ize参数 可参考如下配置 lt hi er ate co figuratio gt lt e io factor

Hibernate的批量处理[3]  

  设置hibernate jdbc batch_size参数 可参考如下配置

<hibernate configuration> <session factory>……

    <property name= hibernate jdbc batch_size > </property>……

    <session factory> <hibernate configuration>

  配置hibernate jdbc batch_size参数的原因就是尽量少读数据库 hibernate jdbc batch_size参数值越大 读数据库的次数越少 速度越快 从上面的配置可以看出 Hibernate是等到程序积累到了 个SQL之后再批量提交

  笔者也在想 hibernate jdbc batch_size参数值也可能不是设置得越大越好 从性能角度上讲还有待商榷 这要考虑实际情况 酌情设置 一般情形设置 就可以满足需求了

    程序实现方面 笔者以插入 条数据为例子 如

Session session=HibernateUtil currentSession()

    Transatcion tx=session beginTransaction()

    for(int i= i< i++)

    {

    Student st=new Student()

    st setName( feifei )

    session save(st)

    if(i% == ) //以每 个数据作为一个处理单元

    {

    session flush() //保持与数据库数据的同步

    session clear() //清除内部缓存的全部数据 及时释放出占用的内存

    }

    }

批量处理单元格 Hibernate的批量处理[3]

    tx mit()

    ……

  在一定的数据规模下 这种做法可以把系统内存资源维持在一个相对稳定的范围

  注意 前面提到二级缓存 笔者在这里有必要再提一下 如果启用了二级缓存 从机制上讲Hibernate为了维护二级缓存 我们在做插入 更新 删除操作时 Hibernate都会往二级缓存充入相应的数据 性能上就会有很大损失 所以笔者建议在批处理情况下禁用二级缓存

lishixinzhi/Article/program/Java/ky/201311/29175  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码