我公司是做erp系统的,现在要求做一个款号转数的task,由于每天款号转数的数据量比较大,而且款号涉及的一些关联要也要进行转数,所以有时候会导致out of momery ,要进行修改!
原代码是用hibernate实现的,
list = gzBma00160pDAO.getTransferData(Bma00160p.class,object);
if(list!=null){
for(Iterator it = list.iterator();it.hasNext();){
Bma00160p newBma00160p = new Bma00160p();
BeanUtils.copyProperties(it.next(), newBma00160p);
try{
Bma00160p bma00160p = bma00160pDAO.getBma00160p(newBma00160p.getBma00160pPK());
if(bma00160p!=null){
newBma00160p.setState(BaseObject.UPDATEMODE_MODIFY);
}else{
newBma00160p.setState(BaseObject.UPDATEMODE_INSERT);
}
newBma00160p.setDlastmodifytime(nowtime);
bma00160pDAO.saveObject(newBma00160p);
}catch(Exception e){
ERPTaskErrorMailListener.addMessage("BMA00160P出错,代号: " + newBma00160p.getBma00160pPK());
LogUtils.warn("bma00160p error : " + newBma00160p);
e.printStackTrace();
}
}
list.clear();
}
每个表查询转数的代码如上,每次都通过本地的对象get远程的对象,看有没有存在,有则update否则insert,这样如果数据量大,频繁的操作数据库是不是导致性能低下的原因呢?如果我换成jdbc,写sql语句一次性update 或 insert 会不会性能有所提升?但这样的话就要建立临时表去存放本地的数据给远程用...
望高手能给予解答,谢谢
桃花长相依
largeQ