数据库连接池的close方法

最近在做一个项目,需要对多种异构数据系统的查询方法做统一封装,发现对于数据库的访问出现了exceed max connect limit问题,经过追查发现对于数据库连接池的close方法理解存在问题。

数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

原先query的代码是这样写的:

conn = tddlClient.getConnection();

rs = conn.executeQuery();

rs.close();

之前错误的理解是数据库会预先建立好一堆连接,getConnection会从连接池里取出来一条空闲的连接,然后会有一个超时时间,过了超时时间自动归还连接。而conn.close()方法会将连接断掉,为了性能考虑所以不应该调用。

实际上出了问题查阅资料才知道,conn.close()是将连接归还到连接池里,而并非断掉连接。如果不去手动close而等超时,很容易就会出现连接池备用光的情况。

你可能感兴趣的:(数据库连接池的close方法)