连接池
________________________________________________________________________________
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