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 池属性,例如最大连接数?