[c3p0] 第一篇:简单认识c3p0

来源:互联网 发布:vb中的caption属性 编辑:程序博客网 时间:2024/06/09 17:08

前言

译文是根据c3p0-0.9.5.1版本的官方文档,加上自己的理解,整理翻译而成。能力有限,译文内容如果有误或是理解有偏差,还请大家纠正!


什么是c3p0

c3p0是一个非常好用的jar类库,根据jdbc3规范和jdbc2规范的标准扩展部分定义实现,使得传统的JDBC更适合企业级开发。在0.9.5版本中,c3p0完全支持jdbc4规范。

c3p0提供了几个有用的服务:

1、获取数据库连接的方式,由传统的基于DriverManager的JDBC驱动获取转换为新的javax.sql.DataSource模式获取。
2、连接池和PreparedStatement隐藏在DataSource后面,DataSource可以“包装”传统的驱动或者是任何不带连接池的DataSource。

该库力图得到正确的细节:

1、c3p0数据源都是Referenceable(可引用的)和Serializable(可序列化的),因此适合绑定基于JNDI的命名服务。

2、当把从连接池中取出的Connection和Statement放回连接池的时候,Statement和ResultSet将被仔细的清理,预防因懒惰采用仅仅清理Connection的资源管理策略而导致的资源耗尽的情况发生。

3、该库采用由JDBC2和3规范定义的方法(这和库作者自身的喜好有些冲突)。DataSource采用JavaBean规范编写,提供了所有必须属性和很多可选属性(包含一些非标准属性),无惨构造器。所有JDBC规范定义的内部接口都被实现(ConnectionPoolDataSource,PooledConnection,ConnectionEvent-generating Connections,etc),你可以混合使用c3p0和第三方组件(但并不是所有的c3p0特性都能很好的兼容外部ConnectionPoolDataSource实现)。

c3p0希望提供更加适合大规模“JavaEE企业级应用”的DataSource实现。如果发现bug或是修复bug,请联系官方!


起步使用

c3p0最初的设计目的就是要使用简单,只需要把jar文件lib/c3p0-0.9.5.1.jar放在应用程序有效的CLASSPATH中,然后创建DataSource即可:

import com.mchange.v2.c3p0.*;...ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass( "org.postgresql.Driver" ); //loads the jdbc driver cpds.setJdbcUrl( "jdbc:postgresql://localhost/testdb" ); cpds.setUser("dbuser"); cpds.setPassword("dbpassword"); 
[可选项]如果你想使用PreparedStatement池,你必须设置maxStatements和maxStatementsPerConnection两个参数(默认值都是0):
cpds.setMaxStatements( 180 );
无论你想用DataSource做什么,它都会被一个用默认参数初始化过的连接池支持。你可以绑定数据源到一个JNDI服务,或者是直接使用,完全依据你的喜好。
当你完成任务后,你可以清理已创建的数据源:

cpds.close();

基本的使用就是这样了!剩下的都是细节问题。


先决条件

c3p0-0.9.5.1需要1.6.x或以上的Java Runtime Environment。


jar引入

把文件lib/c3p0-0.9.5.1.jar和lib/mchange-commons-java-0.2.10.jar放在程序CLASSPATH下(或者其它类加载器可以找到的地方)。就是这样了!

0 0
原创粉丝点击