Spring JDBC vs JDBC

时间:2010-08-09 18:07:35

标签: java spring jdbc jdbctemplate

我一直在尝试使用spring 3.0 SimpleJdbcTemplate,它需要5分钟来插入1500条记录,而它需要几秒钟。使用直接JDBC插入。不确定我做错了什么。

3 个答案:

答案 0 :(得分:6)

如果您正在构建批处理,请考虑使用具有正确块大小设置的Spring批处理 - JdbcBatchItemWriter,这将在不到一秒的时间内加载这1500条记录。

答案 1 :(得分:1)

有些值得检查的事情:

  • 开销可能是Spring在应用程序级别管理的事务。查看您正在使用的事务管理器类型(查找名为transactionManager的bean)。如果您使用的是JTA,那可能就是您的问题所在。由于它与JDBC的速度很快,因此瓶颈似乎不是db。
  • 根据您的应用程序使用该事务的方式,它可能会在完成所有1500个请求和提交之前将所有内容保存在内存中。你是否看到内存使用量有很大差异(Spring应该高很多)?
  • 您在任何一种情况下使用什么类型的数据库连接池?

快速查看应用的方式:

获取pid - "jps -l"

内存:jmap -histo PID(检查是否存在某种形式的内存泄漏)

检查引擎盖下发生了什么:jstack PID(查找慢速或递归方法调用)

答案 2 :(得分:-2)

如何使用

jdbcTemplate.batchUpdate(new String[]{sql});