JDBC-自定义连接池

【连接池的原理】
在javax.sql.DataSource接口–连接池的接口
功能:初始化多个连接.把多个连接放入到内存中
归还:将连接对象放回到内存中
【自定义连接池】
step1.创建类MyDataSource实现DataSource接口
加载驱动代码
创建存放Connection的池子并初始化
获取连接对象
step2.在JDBCUtils类中创建连接池,获取数据库连接对象
创建连接池,获取数据库连接对象
step3.写一个JUnit测试
从连接池中取出Connection对象使用
到此为止实现了自定义连接池,并取出Connection对象使用,但是Connection对象在使用完后应该放回到连接池中,以下是几种解决方案:
1.继承的方法:继承的使用条件:能够控制这个类的构造.
2.装饰者模式:
装饰者模式的使用条件:
2.1增强的类和被增强的类实现相同的接口.
2.2在增强的类中能够获得被增强的类的引用.
接口中方法过多,只增强其中的一个方法.其他方法都需要原样调用原有方法.
3.动态代理:
JDK的动态代理使用条件:
被代理的对象必须实现接口.
step4.使用装饰者模式实现Connection对象用完后放回连接池中
创建MyConnection类实现Connection接口
重写close和preparedStatement方法
step5.在MyDataSource类中,重写getConnection方法时将Connection对象包装成MyConnection对象
将Connection对象包装成MyConnection对象 此时,在运行JUnit test,新特性自动关流,当Connection对象关闭的时候把Connection对象再放到连接池中,自定义连接池完成。