Java 使用Spring插入大量分层数据

Java 使用Spring插入大量分层数据,java,oracle,spring,Java,Oracle,Spring,首先,让我说我是一个完全的JAVA新手。但我有这个问题。我需要将数据插入到一组父子表中。数据结构如下所示 数据项1-(一级数据) 数据项1.1-(二级数据) 数据项1.2 数据项2 数据项2.1 数据项2.2 数据项2.2.1-(三级数据) 数据项2.2.2 数据项3… Oracle中有3个表。 一级数据表(一级ID、名称等) 二级数据表(二级ID、一级ID、名称等) 三级数据表(三级ID、一级ID、名称等) 可能有数千或1级、2级和3级数据 ID来自level1Seq.nextVal、leve

首先,让我说我是一个完全的JAVA新手。但我有这个问题。我需要将数据插入到一组父子表中。数据结构如下所示

数据项1-(一级数据)
数据项1.1-(二级数据)
数据项1.2
数据项2
数据项2.1
数据项2.2
数据项2.2.1-(三级数据)
数据项2.2.2
数据项3…

Oracle中有3个表。
一级数据表(一级ID、名称等)
二级数据表(二级ID、一级ID、名称等)
三级数据表(三级ID、一级ID、名称等)

可能有数千或1级、2级和3级数据

ID来自level1Seq.nextVal、level2Seq.nextVal、level3Seq.nextVal

如何为级别1数据执行批插入批插入,获取所有ID并使用它执行级别2的批插入,以及为级别3执行相同的批插入

目前,我正在使用Spring的jdbcTemplate.batchUpdate进行插入。但是它非常慢。任何帮助都将不胜感激


提前谢谢

PL/SQL有一个返回构造,可以将所有ID值作为数组返回。Oracle文档描述了如何传递阵列。我用Spring做过一次。

确切的类名和包是什么。我在SpringJavadoc中找不到batchUpdate。你知道JavadocURL吗?下面是链接。它是JDBCTemplate类的一个方法,batchUpdate()方法应该是插入许多行的有效方法。但是,如何确定序列生成的值呢?您的意思是编写PL/SQL存储过程而不是在JAVA中插入SQL吗?因此,在JAVA代码中,调用SP,并将数组中的值传递给Oracle?是的,用FORALL插入数组,让它用returning子句告诉您序列值。我从未尝试过这种精确的组合,但值得一试。OracleJDBC文档位于10g版本2的b14355.pdf文档中。使用OraclePreparedStatement中的setPlsqlIndexTable()方法在PRAM中绑定。使用registerIndexTableOutParameter()绑定参数。至于Spring,我想我在jdbc.object包中使用了StoredProcedure对象。但我相信您可以使用JdbcTemplate。