问题描述
方法一:publicstaticvoiddelMany(String[]delid,HibernateDaoSupporthibernateDAO,Classclassname)throwsException{if(delid==null||hibernateDAO==null||classname==null){thrownewException("传值错误");}Sessionsession=hibernateDAO.getSessionFactory().getCurrentSession();session.setFlushMode(FlushMode.AUTO);Transactiontr=session.beginTransaction();try{for(inti=0,n=delid.length;i<n;i++){Objectobj=session.get(classname,delid[i]);if(obj==null){thrownewException("数据库错误");}session.delete(obj);}session.flush();tr.commit();}catch(Exceptione){tr.rollback();e.printStackTrace();thrownewException("删除失败");}finally{session.close();}}方法二:publicstaticvoiddelMany(String[]delid,HibernateDaoSupporthibernateDAO,Classclassname)throwsException{if(delid==null||hibernateDAO==null||classname==null){thrownewException("传值错误");}Sessionsession=hibernateDAO.getSessionFactory().getCurrentSession();session.setFlushMode(FlushMode.AUTO);Transactiontr=session.beginTransaction();try{for(inti=0,n=delid.length;i<n;i++){Objectobj=session.get(classname,delid[i]);if(obj==null){thrownewException("数据库错误");}session.delete(obj);if(i%20==0){[color=#FF0000]//已经配置了hibernate.jdbc.batch_size"值为25session.flush();session.clear();}[/color]}session.flush();tr.commit();}catch(Exceptione){tr.rollback();e.printStackTrace();thrownewException("删除失败");}finally{session.close();}}方法二只比方法一多出蓝色部分的代码到底哪一个使用更方便更高效呢
解决方案
解决方案二:
自己測試一下就知道了!