Spring批量插入关系

时间:2015-02-02 13:07:06

标签: spring spring-batch

我将xml中的记录插入到包含许多外键的表中。从XML数据可能存在尚不存在的外来关系,因此我需要在插入主实体之前插入它。

实施例

<person>
   <name>p1</name>
   <school>XYZ School</school>
<person>

我的JDBCBatchItemWriter sql将是:

INSERT INTO PERSON (NAME, SCHOOL_ID) VALUES (:name, (SELECT ID FROM SCHOOLS WHERE SCHOOL_NAME = :school));

在插入主要实体之前,是否需要单独的作业步骤来插入每个关系?我已经查找了关系数据的示例,我发现的所有内容似乎都是外键已经存在的简单情况。

解决方案: 结束了创建HashMap的步骤&gt;我需要做的所有异物。然后将其注入下一步,如果对象尚不存在则执行插入操作。可能需要比使用内存HashMap更好的解决方案,但似乎现在可以使用。

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以解决这个问题。问题实际上是关于他们如何加载。你需要检查一下它们是否存在吗?如果不必要地执行此检查可能会对性能产生重大影响。实现这一目标的最高效方法是通过一个单独的步骤,假设您可以在之前的步骤中盲目地插入它们。