连接池

________________________________________________________________________________

    1 并发连接少的时候,重用连接对象,性能好!
    2 并发连接多的时候,可以控制总连接数,保护数据库,
      避免连接过载。   
    3 在并发连接多的应用中,必须使用连接池!
    4 连接池的管理参数,要根据实际情况调整!
    5 从连接池中获得的连接,当关闭时候,只是将连接
     


如何使用连接池:   1 JDBC 定义了连接池接口 javax.sql.DataSource 重要的方法只有一个 getConnection()获取数据库连接
   2 由数据库厂商提供 DataSource接口的实现很少在使用这个实现类!
   3 “一般”都采用 第三方 提供的 DataSource实现类常用开源的 DataSource 实现:
      1) Apache DBCP
      2) c3p0 在商业软件中使用很多!
   4 DBCP的使用
      A 导入包 包含DataSource实现类
     

   了DataSource接口,同时也提供了getConnection()方法,以及封装了数据库连接池的策略管理算法。
      C 设置数据库连接参数(driver, url, user, pwd)
      D 设置管理策略参数(可以不设,有默认值)设置方法 setXXX,在管理策略中可以设置超时时间!
      E 调用 getConnection()方法,获得被连接池管理的数据库连接。
        1)是从连接池中获得的连接!
           A)可以是空闲的连接(连接池空闲)
           B) 是新创建的连接  (连接池比较慢)
           C)同步等待(卡了)!(连接池满了!)
              两种情况:有连接归还时候,返回连接;
                        超时了,得到SQL异常!
        2) 当关闭(.close())这个这个连接时候
            连接不会立即断开,是连接对象被设置为空闲
            归还到了连接池.
     
  注意:数据库连接池的策略参数是专用方法! 不同的
          连接池不一样!方法名都不一样,功能类似
          DBCP
          C3p0
 
          getConntion方法是一样的!
 
 
   连接池的使用:       1) 导入jar包
       2) 创建 DataSource实现类的实例
       3) 设置数据库基本连接参数(注意:方法名不同)
           driver
           url
           user
           pwd
       4) 设置 连接池管理策略参数(可选参数)
           根据实际业务需要设置,具体方法参考手册
       5)getConnection() 获得连接。使用连接访问DB
       6)关闭连接(归还连接到连接池!)
 
      连接池:DataSource 接口可以翻译为 "数据源"
              "数据源" == 连接池 == 数据源连接池
 
   何时必须使用连接池:

  软件中有多个并发线程同时
       访问了数据库,这时候必须使用连接池!
       并发访问使用 DataSource