我正在处理一个对我来说很陌生的代码库,它使用了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