JDBC 和 Spring 连接池

Posted

技术标签:

【中文标题】JDBC 和 Spring 连接池【英文标题】:JDBC and Spring connection pool 【发布时间】:2014-05-05 15:20:42 【问题描述】:

我想为 Web 应用程序和 mysql dbms 使用连接池。 如果我想强制连接将特定方法的自动提交设置为 false,是否有可能其他请求使用此连接(自动提交关闭)?

【问题讨论】:

【参考方案1】:

这个连接(自动提交关闭)是否可能被其他请求使用?

您应该始终在最窄的范围内检索Connection,这意味着,最好将其作为您方法的局部变量。然后,您可以通过使用false 调用Connection#setAutocommit 来关闭自动提交,并在使用连接对象后,关闭它。请注意,这只会影响当前事务,其他请求不会受到影响。

【讨论】:

但是这样,如果在请求中我有很多与数据库有关的东西,我将打开和关闭很多连接,这是个好主意吗?我认为连接池是用来避免这种情况的。 @Tobia 我刚刚说过你必须在尽可能窄的范围内打开Connection。这并不意味着您可以通过多个方法(通常作为参数)重复使用相同的打开的Connection @Tobia 使用连接池并不意味着您不应该关闭连接。您必须始终关闭它,然后连接池将处理 关闭 物理连接并将其置于 SLEEP 模式或其他模式而不是关闭它(但这就是工作数据库连接池)。 这对 JdbcTemplate 也有效吗?我看到很多 NamedParameterJdbcDaoSupport 示例没有关闭连接。 @Tobia in JdbcTemplate for Spring 您不需要手动打开连接,框架会为您完成。框架也会为你关闭它。

以上是关于JDBC 和 Spring 连接池的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot (11) tomcat jdbc连接池

Spring-Boot:如何设置 JDBC 池属性,例如最大连接数?

再淡spring jdbc 连接池断开重连设置

Spring JDBC模版以及三种数据库连接池的使用

如何在 Spring/Tomcat 中完全禁用 JDBC 连接池?

jdbc连接池问题 使用的是spring框架自带的jdbctemplate,请问一下在同一次请求中