您好我有一個應用程序,我首先檢查數據庫表中的值,如果不存在,生成一個新的值並插入到數據庫中,這個循環大約有一百萬次,我怎麼能加快?在hibernate中多次調用插入?
public void save(Object obj,Session session) {
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(obj);
session.flush();
session.clear();
tx.commit();
}
catch (HibernateException e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
if(tx!=null){
tx.rollback();
}
}
catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
}
我怎麼能加快這,或者這是正確的做法 - :
在我工人階級: -
session=HibernateSessionFactory.getSession();
for(----loop
i check
i generate
then:-
MyTable myTable=new MyTable();
myTable.setName("dasdas");
myTable.setww("ss");
myTable.setaa("daaasdas");
hibernateRepositoy.save(dgCcno,session);
}
保存方法我其他類?
補充: - 我不能使用批量更新,我必須插入值向右走,導致在下一次選擇查詢值可以是相同的..而不得不放棄從DB則該值
您可以使用hibernate批處理。有關更多詳細信息,請參閱http://stackoverflow.com/questions/8972853/hibernate-batch-insert-batch-update。 – tibtof
@tibtof沒有我不能,我必須馬上插入值,導致在下一個選擇查詢中的值可以是相同的..並且必須從數據庫中給出值然後 – Harinder
你必須馬上提交嗎?我認爲如果你只使用一個事務,它將會更快。 – tibtof