手动创建C3P0数据源
为什么使用连接池:在一般项目中操作数据库,每一次的操作都是建立一个连接,操作完成后才稀放连接,而JDBC不会保持连接的持续,超过一定的时间会稀放该连接。而建立新的连接都需要100多毫秒,从而耗费时间。若使用连接池进行池化连接,随时取用,平均每次取用仅需要15毫秒左右。在高并发随机访问数据库的情况下使用连接池能很好提高效率。c3p0是一个开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC
为什么使用连接池:
在一般项目中操作数据库,每一次的操作都是建立一个连接,操作完成后才释放连接,而JDBC不会保证连接的持续,超过一定时间就会释放该连接。而建立新的连接都需要100多毫秒,从而耗费时间。若使用连接池进行池化连接,随时取用,平均每次取用仅需要15毫秒左右。在高并发随机访问数据库的情况下使用连接池能很好的提高效率。
c3p0是一个开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,使用它的开源项目有Spring、Hibernate等。c3p0还具有自动回收空闲连接的功能。
c3p0基本使用:(这里以连接MySQL数据库为例)。
user: 用户名
password :密码
driverClass: 驱动(如mysql驱动 com.mysql.jdbc.Driver)
jdbcUrl: 路径(如mysql路径 jdbc:mysql://localhost:3306/数据库名)
initalPoolSize:连接池初始化时创建连接数
acquireIncrement:连接池无空闲连接可用时,一次性创建的新连接数,默认值为3
maxPoolSize:连接池中拥有的最大连接数,默认值为15
minPoolSize:连接池中拥有的最小连接数
maxidelTime:连接最大空闲时间,如超过这时间,某个数据库连接还没使用则会断开该连接, 默认为0,0表示永远不会断开连接
maxConnectionAge:配置连接的生存时间,超过该时间则会自动断开并丢弃,默认值为0,表示不会对连接的生存时间进行限制。
maxIdleTimeExcessConnections:这个配合为减轻连接池的负载,配置不为0,则会将连接池的连接数量保持到minPoolSize,为0则不处理。
数据源开发的步骤:
1.导入数据源的坐标和数据库驱动坐标
2.创建数据源对象
3.设置数据源的基本连接数据
4.使用数据源获取连接资源
5.归还连接资源
单元测试具体实现如下:
pom.xml文件
测试类:
打印结果:
我们看到有地址值输出,说明我们连接成功。
PS:
如果出现 A ResourcePool could not acquire a resource from its primary factory or source 异常
建议查看 pom.xml 中数据库驱动jar包是否合适,引入的驱动包要跟自己本地的数据库相匹配。
更多推荐
所有评论(0)