【问题标题】:Spring SimpleJdbcInsert vs JdbcTemplateSpring SimpleJdbcInsert 与 JdbcTemplate
【发布时间】:2015-12-08 20:20:15
【问题描述】:
我有一个要求,我必须在数据库中插入一行并取回密钥(身份)。我想为此使用 SimpleJdbcInsert。我将JdbcTemplate 的对象传递给我的SimpleJdbcInsert 并执行方法executeAndReturnKey()。
同样可以使用JdbcTemplate的update()方法通过设置PreparedStatement而不是Parameters Map来完成。
我只想知道 JdbcTemplate 在性能方面是否更好,我应该使用它而不是 SimpleJdbcInsert 吗?如果是这样,那么它性能优越的原因是什么?
注意:我插入的不是一批记录,而是一条记录。
谢谢
【问题讨论】:
标签:
spring
performance
spring-jdbc
jdbctemplate
simplejdbcinsert
【解决方案1】:
SimpleJdbcInsert 与 JdbcTemplate
来自docs.spring.io
JdbcTemplate 是经典的 Spring JDBC 方法,也是最流行的。这种“最低级别”的方法和所有其他方法都在幕后使用 JdbcTemplate。
注意:所有其他人都在后台使用 JdbcTemplate
SimpleJdbcInsert 优化数据库元数据以限制必要配置的数量。这种方法简化了编码,因此您只需提供表或过程的名称,并提供与列名匹配的参数映射。这仅在数据库提供足够的元数据时才有效。如果数据库不提供此元数据,则必须提供参数的显式配置。
如果您要使用 SimpleJdbcInsert,那么实际的插入也是使用 JdbcTemplate 处理的。所以就性能而言,SimpleJdbcInsert 绝对不能比 JdbcTemplate 更好。
所以在性能方面,使用 SimpleJdbcInsert 并不能带来好处。
但是使用 SimpleJdbcInsert 对多个表执行插入操作肯定比 JdbcTemplate 类具有更好的能力。在某些情况下,您可能希望在其中插入数据很多表,您可能希望减少编码。在这些情况下,使用 SimpleJdbcInsert 可能是一个很好的选择。请参阅此example 以了解这一点。