简单的数据库连接池
- 实现DataSource()接口,规范
- 构造方法建立多个连接,存进集合List里面
- getConnection();获取连接
- addBack();归还连接
出现的问题
1.需要额外记住addBack()方法,这个方法不是DataSource()的抽象方法
2.需要用单例模式来解决连接池的唯一性
3.无法面向接口编程,addBack的时候无法通过,需要通过修改connect的close()方法来替代addBack的方法,把关闭做成归还,这样的话,用户代码那边close关闭就等于归还连接。
但是不知道connection这个接口的实现类是什么,连继承都不知道继承哪一个类。我们平时都是直接通过connection这个接口和驱动DriverManager.getConnection来获取connection这个类来用的。这样我们无法继承然后重写close。
这里需要用到装饰者模式,把connection的实现类传进装饰类实现connection,其他的方法直接调用原本的方法,close方法自己写,然后把这个装饰者类返回出去。用户不需要知道用的是哪一个connection实现类,只需要用connection这个接口的方法就好了。
DBCP apache
先导包,commons-dbcp-1.4.jar、commons-pool-1.5.6.jar然后buildpath
具体代码和普通的jdbc使用相似
C3P0、hibernate、spring:开源连接池