c3p0数据库连接池如何在Java项目中使用-创新互联

今天就跟大家聊聊有关c3p0数据库连接池如何在Java项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在连城等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、网站设计 网站设计制作按需搭建网站,公司网站建设,企业网站建设,品牌网站制作,营销型网站,外贸营销网站建设,连城网站建设费用合理。

c3p0是什么

c3p0的出现,是为了大大提高应用程序和数据库之间访问效率的。

它的特性:

  • 编码的简单易用

  • 连接的复用

  • 连接的管理

说到c3p0,不得不说一下jdbc本身,c3p0愿意就是对数据库连接的管理,那么原有的概念还是得清晰:DriverManager、Connection、StateMent、ResultMent。

jdbc:java database connective这套API,不用多说,是一套用于连接各式dbms或连接桥接器的api,两个层级:上层供应用方调用api,下层,定义了各个dbms的spi的api(具体文档见:这里)。

主要要提的是:datasource、DriverManager,想到哪儿写到哪儿,datasource是更高级一点的api,原因在于相对对应用来说更透明。

Connection:同dbms的逻辑链接,类似于session管理概念, SQL statements are executed and results are returned within the context of a connection.

jdbc的概念就到这里,平时用得比较多。

c3P0的配置 

c3p0的bean配置如下:


  
  
  
  
  
  
  
  
 

还有一些配置选项,后续详细说明。可见c3p0的bean引用使用的是:ComboPooledDataSource,该类结构如下:

c3p0数据库连接池如何在Java项目中使用

c3p0数据库连接池如何在Java项目中使用

以上类图都不是很完全,不过大体能表达出类之间的原理:

1、bean:ComboPooledDataSource的父类:AbstractPoolBackedDataSource有一个poolmanager字段,存储着对pool管理器

2、获取ds.getConnection()链接对象时,内部使用getPoolManger()获取C3p0ConnectionPooledManager(mgr)对象,该manager管理着pool对象:C3P0PooledConnectionPool对象,mgr.getPool().checkoutPooledConnection()

3、自此该connection已经被获取到了

4、让我们看看该connection的真实面目吧:

 ProxyConnection。

5、因此其实原理是:

从pool里获取到的connection,是proxy包装的connection,而对connection的释放或者重用,是pool的管理责任:初始化池大小,维护池的大小(expand或shrink),管理unused、expired、checkout、checkin连接。

真正底层的连接是jdbc自己的连接,而c3p0的管理部分,基本上使用的是synchronized关键字,使用timerTask定时器工作。

看完上述内容,你们对c3p0数据库连接池如何在Java项目中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网站标题:c3p0数据库连接池如何在Java项目中使用-创新互联
分享地址:http://hbruida.cn/article/jddig.html