【发布时间】:2013-04-27 10:03:29
【问题描述】:
使用 JDBC (Oracle),我需要将数千行插入到三个不同的表中。基本上,我想在一个循环中一个接一个地执行 3 个插入 SQL 语句。
我阅读了this link,我想知道哪个实现更好(就执行时间而言):
- 批量执行第一条SQL语句,取回生成的key
- 使用步骤 1 中生成的密钥批量执行第二条 SQL 语句并检索新生成的密钥
- 使用第 1 步和第 2 步生成的键执行第三条 SQL 语句
或循环遍历每条记录以插入,并为每条记录一个接一个地执行 3 个 SQL 语句。
我知道第一个实现是依赖于数据库的(因为不是每个数据库都支持ResultSet.getGeneratedKeys())。也许还有第三种我没有想到的实现方式?
我想使用单个连接,因此,对于这两种实现,我将首先获得一个连接,执行每个插入操作,最后提交并关闭连接。
另外,我想知道我是否可以使用任何 Spring JDBC 抽象。 Spring JdbcTemplace 的第二个实现似乎是可能的(用@Transactional 包装方法以使用相同的连接)但第一个看起来很困难,因为 JdbcTemplate 的方法 batchUpdate 不返回生成的密钥。
【问题讨论】:
标签: spring jdbc spring-batch