从Spring jdbc获取java.sql.connection:getJdbcTemplate()

时间:2014-08-15 14:22:18

标签: java sql spring connection jdbctemplate

在我的应用程序中,我们试图从Spring获取java.sql.Connection,

Connection conn = DataSourceUtils.getConnection(this.getJdbcTemplate().getDataSource());

我使用此连接对象来设置准备状态并执行查询以获取结果集。

我知道当我们使用jdbcTemplate时,打开连接,关闭连接等的负担由spring本身承担,我们不需要明确处理代码。

但在这种情况下我有点困惑,因为我们从jdbcTemplate显式获取连接对象,我们是否还需要在代码中明确处理连接关闭?我们正在使用连接池。

提前致谢。

BD

2 个答案:

答案 0 :(得分:1)

这取决于您配置的数据源类型(在您的情况下是配置了连接池的数据源),因此DatasourceUtils getConnection使用相同的数据源,因此您创建的Connection对象将被合并,这意味着如果您调用close在此连接对象上,连接实际上不会被关闭,而是将返回到连接池

答案 1 :(得分:1)

如上所述,取决于如何获得连接,您将关闭连接或将其返回到池中。

但是当你使用JbbcTemplate时,你根本不需要处理连接,因为Spring会为你处理这个。

您应该定义一个行映射器来处理所有结果集处理,然后在JdbcTemplate上调用适当的方法来为您执行语句。然后,Spring代码将

  • 为您提供开放式连接
  • 执行查询过程结果集
  • 使用行映射器将其映射到域对象
  • 关闭结果集
  • 关闭连接或将其返回池中

请参阅Spring documentation for JdbcTemplate,其中详细说明了您必须做什么以及Spring为您做了什么。