java

位置:IT落伍者 >> java >> 浏览文章

Hibernate的批量处理[3]


发布日期:2018年04月14日
 
Hibernate的批量处理[3]

设置hibernatejdbcbatch_size参数可参考如下配置

<hibernateconfiguration> <sessionfactory>……

<property name= hibernatejdbcbatch_size></property>……

<sessionfactory> <hibernateconfiguration>

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

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

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

Session session=HibernateUtilcurrentSession()

Transatcion tx=sessionbeginTransaction()

for(int i=i<i++)

{

Student st=new Student()

stsetName(feifei

sessionsave(st)

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

{

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

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

}

}

txcommit()

……

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

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

[] [] [] [] []

               

上一篇:对于Struts和Spring两种MVC框架的比较[1]

下一篇:Hibernate的批量处理[2]