C3p0源码探索(一)之配置篇
所需文件:
1、 c3p0-0.9.1.2.jar http://sourceforge.net/projects/c3p0/
2、 mysql.jar http://dev.mysql.com/downloads/connector/j/5.0.html
3、 c3p0-0.9.1.2http://nchc.dl.sourceforge.net/sourceforge/c3p0/c3p0-0.9.1.2.src.zip(可选)
拥有以上三样东西就可以开始c3p0之旅了,把mysql.jar和c3p0-0.9.1.2.jar放到classpath中就可以开始编写我们的代码了。
C3p0最简单的使用方式就如其官网下所说的一样,只需提供driverName,url,user,password,程序就可以跑起来。
第一种获取数据源的方式:
ComboPooledDataSource cpds = new ComboPooledDataSource();
String driverClass = "com.mysql.jdbc.Driver";
String jdbcURL = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "";
cpds.setDriverClass(driverClass);
cpds.setJdbcUrl(jdbcURL);
cpds.setUser(user);
cpds.setPassword(password);
cpds.setMaxStatements(100);
Connection conn = cpds.getConnection();
正如简单的jdbc连接数据库一样仅仅只需要这些参数而已。
对于这种配置,如果classpath中有c3p0.properties的配置文件,代码中不需要设置连接信息,直接new
ComboPooledDataSource(),他会自动读取配置文件中的配置。当然也可以使用c3p0-config.xml文件配置连接信息,使用xml作为配置信息的话,comboPoolDataSource还可以接受一个String参数,这个参数的名称是在c3p0-config.xml文件中配置,这就意味着我们可以在xml文件中可有都多个数据库源连接信息,比如可以是mysql,oracle的。
ComboPooledDataSource cpds = new ComboPooledDataSource(“test”);
<named-config name="test">
<property name="maxStatements">200</property> <propertyname="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password"></property>
</named-config>
使用配置文件的方式连接时,c3p0默认在classpath根目录读取配置文件,如果想把配置文件放在自己想放得地方只需设置系统属性
System.setProperties(“ com.mchange.v2.c3p0.cfg.xml”,”config/c3p0-config.xml”);
程序就在指定的目录下读取该配置文件。
第二种方式获取数据源,使用数据源工厂类DataSources
DataSource ds = DataSources.unpooledDataSource(jdbcURL, user, password);
DataSource pooledDateSource = DataSources.pooledDataSource(ds);
System.out.println(pooledDateSource.getConnection());
第三种获取数据源的方式:
PoolBackedDataSource backedDataSource = new PoolBackedDataSource();
backedDataSource.setConnectionPoolDataSource(new ConnectionPoolDataSource() );
//实现自己的connectionpooldatasource即可
参数配置:
除了以上连接数据库必要的参数外,提供以下最基本的参数配置信息才能形成数据库连接池
1、 acquireIncrement 每次连接增加数量
2、 initalPoolSize 初始连接数
3、 maxPoolSize 最大连接数
4、 maxIdleTime 最大空闲数
5、 minPoolSize 池中连接最小数量
Tomcat中配置c3p0的方法:
1、server.xml中配置
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="jdbc/test"
auth="Container"
description="User database that can be updated and saved"
factory="org.apache.naming.factory.BeanFactory"
driverClass="com.mysql.jdbc.Driver"
maxPoolSize="4"
minPoolSize="2"
acquireIncrement="1"
user="root"
password=""
type="com.mchange.v2.c3p0.ComboPooledDataSource"
jdbcUrl="jdbc:mysql://localhost:3306/test"
/>
</GlobalNamingResources>
2、 conf目录下Context.xml
<ResourceLink name="jdbc/test" global="jdbc/test" type="javax.sql.DataSource"/>
3、 web.xml
<resource-ref>
<res-ref-name>jdbc/ test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
测试:
InitialContext context = new InitialContext();
return (DataSource) context.lookup("java:comp/env/jdbc/test");
分享到:
相关推荐
数据库连接池C3P0是Java开发中常用的一款开源连接池组件,它的主要功能是管理数据库连接,提高数据库操作的效率和系统的资源利用率。本文将深入解析C3P0的源码,帮助读者理解其内部机制和工作原理。 C3P0的核心功能...
C3P0是一个开源的JDBC连接池,Hibernate可以与其整合,管理数据库连接,提高数据库操作的效率。C3P0提供连接测试、空闲超时和自动扩展等功能,以确保数据源的稳定性和性能。 4. **Hibernate OSGi支持(hibernate-...
2. **MDX连接池配置**:为了优化性能,可以使用连接池如C3P0或HikariCP。这同样在应用服务器的配置文件中设置,需要指定数据源的实现类和相关属性。 3. **MDX查询工具选择**:JSP中可以使用开源的MDX库,如 ...
以下是一个简单的C3P0配置示例: ```xml <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> ;databaseName=myDatabase"/> ``` Apache DBCP是另一个常用的JDBC连接池,它...
例如,Struts2的Tiles插件用于构建复杂的页面布局,而Hibernate3的C3P0或Apache DBCP可以提供连接池,提高数据库操作效率。 通过学习和理解这个实例,开发者可以深入理解Struts2和Hibernate3的协同工作方式,这将对...
4. **配置数据库探索器**:这一步可能涉及到数据库连接池的设置,如C3P0或DBCP,以便更好地管理数据库连接。 5. **添加Hibernate支持**:Hibernate是ORM(对象关系映射)框架,负责将Java对象与数据库表进行绑定。...
这些jar文件包含了Nutch运行所需的依赖库,包括数据管理的c3p0-0.9.1.jar和MySQL连接的mysql-connector-java-5.1.6-bin.jar。 2. **数据库连接**: - c3p0-0.9.1.jar是数据库连接池管理的库,它帮助有效地管理和...
在实验中,我们练习了数据库连接池的使用,如C3P0或DBCP,以提高数据库操作的效率和资源管理。 EJB(Enterprise JavaBeans)是JavaEE中的企业级组件,用于构建可复用、安全和可移植的业务逻辑。虽然现代开发中更多...
7. **连接池管理**:Hibernate依赖于连接池来高效管理数据库连接,如C3P0或DBCP,源码中可以看到如何配置和使用这些连接池。 8. **类型系统与值类型**:Hibernate的`Type`接口定义了各种值类型的映射,包括基本类型...
数据库连接池是一种管理数据库连接的技术,它可以提高数据库访问效率,减少资源消耗,常见的连接池有C3P0、DBCP、Apache DBCP2和HikariCP等。 在项目中,你可能还会遇到以下关键知识点: 1. **JDBC**:Java ...
随着高性能数据库连接池的出现,如C3P0、Druid和HikariCP,它们提供了更优秀的连接管理和性能优化。比如HikariCP以其极低的空闲连接超时和快速的连接建立时间,成为许多高并发应用的首选。 5. **Spring Boot集成**...
5. **连接池**:了解如何使用连接池(如C3P0或Druid)管理数据库连接,提高性能和资源利用率。 6. **安全性**:学习如何防止SQL注入、XSS攻击等常见的Web安全问题。 7. **异常处理**:掌握Java和JSP中的异常处理...
常见的连接池实现有C3P0、DBCP、HikariCP等。 - 使用连接池的基本步骤包括配置连接池属性(如最小/最大连接数、超时时间等),获取和释放连接。 2. **预编译SQL语句(PreparedStatement)**: - 预编译SQL语句...
10. **数据库连接池**:在实际应用中,通常会使用连接池(如C3P0、HikariCP、Druid等)管理数据库连接,提高资源利用率并优化性能。 由于源代码中可能涉及多种数据库,所以你还会看到针对不同数据库的特定操作,...
了解了基础的JDBC用法后,你还可以探索更高级的主题,如连接池(如HikariCP、C3P0),它们可以有效地管理数据库连接,提高性能。此外,ORM(对象关系映射)框架如Hibernate和MyBatis可以让Java开发者以更面向对象的...