为什么要用连接池?
每一次的数据库连接, 都要创建新的连接, 使用完又要关闭掉。频繁的创建和关闭连接, 会造成资源浪费, 效率降低
解决: 连接池 DataSource 数据源
初始化的时候就已经创建好几个连接对象
连接数据库时候, 直接从连接池中获取一个连接对象使用
使用完, 归还给连接池, 可以让连接对象重复利用,从而节约空间, 提高效率
实现连接池的思路:
1.初始化: 需要一个集合来存储连接对象
2.getConnection(): 从集合中获取一个连接
3.connection.close(): 把连接, 重新加到集合中
重点: 修改close方法, 重写(继承Connection的实现类)
指定 方法的增强 -> 设计模式 (装饰者模式, 代理模式)
常见连接池:
DBCP连接池: apache
c3p0
druid: alibaba
c3p0:1.导入jar包 2.在src下写c3p0-config.xml配置文件 3.new ComboPooledDataSource
c3p0-config.xml:
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day25</property>
<property name="user">root</property>
<property name="password">root