代码太多,以下是链接:http://user.qzone.qq.com/457695804/infocenter

解决方案 »

  1.   

    释放连接得让用户使用 freeConnection 么?如果是这样的话,代码与连接池就产生了高度耦合,没有遵从 JDBC 的规范去设计连接池,因为 JDBC
    规范所规定的连接释放方式是 Connection#close,并不是调用 freeConnection,而且作为连接池的设
    计者也不可能去阻止使用者,把从连接池中获得的连接调用 close 方法。如果不对 Connection 的 close 方法进行处理加工的话,在使用者调用 close 时,实际上是关闭了与
    数据库的连接,这样的话连接池就形同虚设了。将 Connection 原有 close 方法进行改造,一般可以采用动态代理直接改造 close 方法,或者采用设
    计模式中的装饰器模式,返回一个被包装过的 Connection 对象,而包装中将 close 方法给改造掉了。还是再要强调一下,用户的 JDBC 中使用与不使用连接池代码必须是完全一样的,也就是说用户调用的
    代码中看不出有非 JDBC 规范的东西,这样才能做到松耦合。当然了 getConnection 方法是不一样的,
    如果用户想换用其他的连接池或者不使用连接池,就可以稍微地更改一下 getConnection 方法的行为,
    甚至直接修改一下配置文件就能做到了。连接池的设计非常复杂,要考虑的问题也很多。我在原来几道小小的题目一起和大家更进一步地了解 Java(Ⅳ)这个帖子的第 6 问中提到过一些。希望能看到楼主做的连接池的第二版  ^_^