public void batchDelete(final Integer[] arrayID) {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String hql = "delete from Userdb as model where model.id = :id";
Query query = session.createQuery(hql);
for(int i=0; i<arrayID.length; i++) {
query.setString("id", String.valueOf(arrayID[i]));
query.executeUpdate();
}
return null;
}
});
}ssh结构
批量删除,这样写可以吗
已经写了aop事务管理,还需要写Transaction ta = session.beginTransaction();这句吗

解决方案 »

  1.   

    设置:<hibernate-configuration> 
    <session-factory> 
    ......... 
    <property name=” hibernate.jdbc.batch_size”>10</property> 2
    query.executeUpdate();if(i%50==0) //以每50个数据作为一个处理单元 
    ...{ 
    session.flush(); //保持与数据库数据的同步 
    session.clear(); //清除内部缓存的全部数据,及时释放出占用的内存 

    3 如果你没有做spring 的声明式事物定义,在这里就要开启事物