连接池以及连接池归还的方法

作用:提高操作性能

  DataSource接口:用于创建连接池

 自己创建连接池步骤:

  导入jar包

  引入jdbc工具类
  1.准备容器,用于保存连接对象
    调用工具类中的方法创建连接对象
    private static List<Connection> pool=Collections.synchronizedList(new ArrayList<>());
  2.定义静态代码块,通过工具类获取连接对象
    static{
      for(int i=1;i<10;i++){
      Connection con=JDBCUtils.getConnrction()
      pool.add(con)
      }
    }
  3.重写getConnection方法
    在方法中调用连接对象之前需要先判定连接池中是否存在连接对象
    public Connection getConnection() throws SqlException{
      if(pool.size()>0){
        Connection co=pool.remove(0)
        return co
      }else{
        throw new RuntimeExcepion("连接数已用尽")
      }
    }
  4.定义getSize方法,获取连接池容器大小
    public int getSize(){
      return pool.size();
    }

 

  

  调用连接池对象:
    创建连接池对象
    通过连接池对象获取连接对象
    查询信息
    执行sql语句,接收结果集
    处理结果集
    释放资源

  装饰模式归还连接(比较繁琐):
    1.定义一个类,实现Connection接口
    2.定义连接对象和连接池容器对象
    3.通过有参构造方法为成员变量赋值
    4.重写close方法,完成归还连接
    5.剩余方法还是调用原有的连接对象即可
  适配器设计模式:创建一个适配器类(创建层抽象类),实现除目标方法以外的所有方法,在自定义类中继承这个适配器类,重写目标方法即可。注意:这里的连接对象需要通过super传递给父类也就是适配器类。
  动态代理的方式归还连接:
    通过Proxy来完成对Connection实现类的对象的代理,代理过程中判断是否实现的close方法,进行连接对象的归还
  C3P0连接池的使用
    导入jar包
    导入配置文件必须在src目录下
  创建C3P0连接池对象
  获取数据连接进行使用
  注意:C3P0的配置文件会自动加载,但必须交c3p0-config.xml或者c3p0-config.properties

  继承的方式是无法实现连接池的归还的

posted @ 2021-06-23 17:19  爱敲键盘的猫  阅读(607)  评论(0)    收藏  举报