hibernate的批量删除,大家怎么做的?

    
you.cai
03-09-11 16 3526

有个业务要求,需要批量删除,找了半天,没有找到,只有一个近似的,
是利用主子表的方式,删除所有子表。

robbin
2003-09-11 11:09

session.delete("from Cat as c where ...");

把 hibernate.jdbc.batch_size 50 尽量设的大些,可以得到接近JDBC的删除速度。

yehs220
2003-09-11 11:12

>可以得到接近JDBC的删除速度<

我觉得不可能,hibernate要先select出来,再delete。

还是写jdbc来做batch delete,update吧

robbin
2003-09-11 11:19

可不可能自己试试就知道了。

我的测试:

Oracle817,ojdbc14.jar 表记录1万条,全部删除。

JDBC:

sql语句 delete from cat
速度:平均6s

Hibernate:

session.delete("from Cat as c");
==> select id,name,sex,weight from cat;
==> delete from cat where id = ?

Batch Size = 0 速度: 25s
Batch Size = 50 速度: 6s

you.cai
2003-09-11 11:21

是这样,看了源代码,是查一条删一条:(。

4Go 1 2 3 4 下一页