我正在使用一个对我来说很新的代码库,它使用的是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。
答案 0 :(得分:0)
我强烈建议您考虑使用春季批次 - http://static.springsource.org/spring-batch/
该框架提供了批处理所需的许多基本功能 - 错误报告,事务管理,多线程,缩放,输入验证。
该框架设计精良,易于使用。
您列出的方法可能效果不佳,因为您正在等待读取所有对象,将它们全部存储在内存中,然后插入数据库中。
您可能需要考虑按如下方式设计流程:
SpringBatch将允许您执行批量提交,控制批量提交的大小,在读取输入时执行错误处理 - 在您的情况下重试请求,在将数据写入数据库时执行错误处理。
看看它。