Spring 批量插入关系

Spring batch inserting relationships

我正在将 xml 中的记录插入到具有许多外键的 table 中。根据 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> 我需要制作的所有外来对象。然后将其注入下一步,如果该对象尚不存在,则执行插入。可能需要比使用内存中的 HashMap 更好的解决方案,但目前似乎可以使用。

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