用hibernate如何批量删改操作?(内详)

我看了下文档,批量删改的话 ,有两种:
一种是批量操作的实体们有共同部分,就可以用HQL语句来一次性执行。
二种是实体数据没有共同部分,就用for循环,注意清理session缓存。

请问第二种情况,我觉得用for循环感觉比较别扭而且也担心性能问题。 是否还有解决办法?

2个回答

第二种方法没太大问题的,即使性能可能有问题也不是for引起的。而且不必每次循环都清理缓存,可以每添加n个清理一次,下面是示例代码,你看下。
[code="java"]
Session session=HibernateUtil.currentSession();
Transatcion tx=session.beginTransaction();
for(int i=0;i<10000;i++)
{
Student st=new Student();
st.setName(“feifei”);
session.save(st);
// 以每50个数据作为一个处理单元
if(i%50==0)

{
// 只是将Hibernate缓存中的数据提交到数据库,保持与数据库数据的同步
session.flush();

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

}
}
tx.commit();

[/code]

施主多虑了,这种问题是不可避免的,如果是适合使用批量操作的话,性能一定要比没有使用批量操作的性能要好的多,so不用去考虑循环问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!