如果在某次使用或者是程序中没有正确的关闭connection,statement,resultSet资源,每次执行都没有完全关闭数据库连接,这些数据库连接没有能够重新放回数据库连接池得到再次使用,就造成了数据库连接泄漏,数据库连接的有限资源被浪费,数据库连接的资源被慢慢消耗,影响系统的正常运行。
Spring DAO 对所有支持的数据访问技术框架都使用模板化技术进行了薄层的封装。只要您的程序都使用 Spring DAO 模板(如 JdbcTemplate、HibernateTemplate 等)进行数据访问,一定不会存在数据连接泄漏的问题 ―― 这是 Spring 给予我们郑重的承诺!
但是由于集成第三方产品,整合遗产代码等原因,可能需要直接访问数据源或直接获取数据连接及其衍生品。这时,如果使用不当,就可能在无意中创造出一个魔鬼般的连接泄漏问题。
如何获取这些被 Spring 管控的数据连接呢? Spring 提供了两种方法:其一是使用数据资源获取工具类,其二是对数据源(或其衍生品如 Hibernate SessionFactory)进行代理。
以上为网上资料个人总结,方便自己理解,谨慎使用。
参考资料: