我正在處理一個對我來說很陌生的代碼庫,它使用了iBatis。 我需要更新或添加到現有的表,它可能涉及20,000多條記錄。 該過程每天運行一次,並在半夜運行。一般交易處理很多記錄的問題
我從Web服務調用中獲取數據。我打算獲取數據,然後爲每個記錄填充一個模型類型對象,並將每個模型類型對象傳遞給將讀取對象中數據的一些方法,並將數據更新/插入到表中。
例子:
ArrayList records= new ArrayList();
Foo foo= new Foo();
foo.setFirstName("Homer");
foo.setLastName("Simpson");
records.add(foo);
//make more Foo objects, and put in ArrayList.
updateOrInsert(records); //this method then iterates over the list and calls some method that does the updating/inserting
我的主要問題是如何處理所有的更新/插入作爲交易。如果系統在讀取所有記錄以更新/插入表之前關閉,我需要知道,因此我可以返回到Web服務調用並在系統正常時重試。
我使用的是Java 1.4,而db是Oracle。
我不允許使用除我擁有的東西以外的任何東西,它基本上只是Java 1.4。您概述的步驟很有幫助,您是否介意評論我將如何使用交易? – bmw0128 2011-03-09 17:26:07
如果你不允許使用1.4以外的其他東西,那麼你將不得不自己做tx管理。 – sdc 2011-03-09 19:31:48
抓取連接,將autocommit設置爲false,執行批量插入,當完成所有記錄時,執行顯式提交 – sdc 2011-03-09 19:32:33