数据库连接池-c3p0连接池 无需关注statement是否关闭吗

问题描述

c3p0连接池 无需关注statement是否关闭吗

c3p0连接池 ,当connection.close()的时候,把数据连接还回连接池中,那么connection所产生的statement,resultset等对象是怎么关闭的?

解决方案

使用 c3p0 的话,也是 java.sql.Connection,只要是 JDBC 都是这个接口的对象!

使用完后必须 con.close() 掉,使用连接池的话,执行 con.close 并不会关闭与数据库的 TCP 连接,而是将连接还回到池中去,如果不 close 掉的话,这个连接将会一直被占用,直接连接池中的连接耗尽为止。

至于是如何做到 con.close 并不是真正意义上的关闭连接?而是直接将连接还回到池中去?

一般有两种方式:

一:使用装饰器模式,在装饰器构造中传入一个真正的 Connection,这个装饰器实现 Connection,使用构造 传入 Connection 委托重写所有方法,并改写 close 方法:

然后经过连接池控制的 Connection 对象都使用该装饰器进行包装

二:动态代理:

使用动态代理重新实现 close 方法,每个获得 Connection 是一个代理后的对象。

一个完善的连接池,其架构设计非常复杂,Connection#close 问题就是连接池诸多设计难点当中的一个。

(以上为转载,希望能够帮到你。)
这个是链接:
http://bbs.csdn.net/topics/330195313

解决方案二:

不用管,这些会被自动垃圾回收的。只要程序不再使用。

时间: 2024-09-18 13:42:56

数据库连接池-c3p0连接池 无需关注statement是否关闭吗的相关文章

c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了?

问题描述 c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了? 自己做写了一个管理数据源的DBManager,构想中从数据源里面获取的Connection使用完之后执行close()方法,然后把Connection对象闲置回连接池中. 但是测试出来的结果好像每次执行close()之后connection就销毁了. 代码如下: DBManager.java package ben.DBUtils; import java.sql.Connection; impo

javaee-使用c3p0连接池是出现了空指针异常

问题描述 使用c3p0连接池是出现了空指针异常 连接不上我的mysql数据库,但是我单独测试又可以连接上,测试代码如下: Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/shi"; String name

hibernate + c3p0连接池 出现以下错误,求解答!

问题描述 hibernate + c3p0连接池 出现以下错误,求解答! 5C 05-Apr-2016 10:36:43.186 INFO [C3P0PooledConnectionPoolManager[identityToken->2sbh7t9f1rc58zmz5ikx9|52feca18]-AdminTaskTimer] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illega

请问有没有人知道c3p0连接池配置文件报错,下面是具体报错内容

问题描述 请问有没有人知道c3p0连接池配置文件报错,下面是具体报错内容 Invalid property 'driverClassName' of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]: Bean property 'driverClassName' is not writable or has an invalid setter method. Does the parameter type of the setter

c3p0连接池-如何快速定位jar 包冲突

问题描述 如何快速定位jar 包冲突 建立c3p0连接池是时,报Mlog clients using java 1.4+ standard logging. 请问这是jar 包冲突造成的么.如何快速定位jar 包冲突造成的问题呢

可以介绍一下c3p0连接池和自己写的向量连接池的区别么?

问题描述 可以介绍一下c3p0连接池和自己写的向量连接池的区别么? 可以介绍一下c3p0连接池和自己写的Vector向量连接池的区别么? 解决方案 一个是系统的 一个是自定义的

hibernate+c3p0连接池,插入数据程序运行一会就卡住

问题描述 程序是一个导入Excel数据的工具,excel中有好几千条数据,但是程序运行一会,每次都是导入24条以后程序就不运行了,程序好像处于挂起状态一样,卡住了,控制台上也不再打印hibernate日志信息,不知道什么原因,有没有会的看一下,谢谢!   hibernate.cfg.xml配置如下:<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernat

c3p0连接池-c3p0 连接不释放 请路过的大神过来看看

问题描述 c3p0 连接不释放 请路过的大神过来看看 配置文件如下 <?xml version="1.0" encoding="UTF-8"?> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://w

Http请求连接池 - HttpClient 连接池

两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间.Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大.但是如果我们直接使用已经建立好的http连接,这样花费就比较小,吞吐率更大. 传统的HttpURLConnection并不支持连接池,如果要实现连接池的机制,还需要自己来管理连接对象.对于网络请求这种底层相对复杂的操作,个人以为如果有可用的其他方案,也没有必要自己去管理连接对象. 除了HttpURLConnection,大家肯定还知道Ht