http://blog.csdn.net/cyq1984/article/details/11934897
Hibernate推荐使用c3p0作为数据库连接池,管理数据库连接的资源。如果使用的应用服务器为非商业版本(比如:tomcat等),建议使用c3p0作为数据库连接池。但是,如果使用的是商业应用服务器,建议使用应用服务器内置的数据库连接池。因为,商业产品一般都会提供连接池的运行情况监控信息,从而便于未来应用的调优等操作。
但是,对于c3p0的配置,由于之前一直没有时间仔细研究,因此,也就暂且搁置。目前,又要使用hibernate,便又拿来,顺便把自己所搜罗到的所有的参数都记录下来,以备查。
c3p0的配置方式分为三种,分别是:
- setters一个个地设置各个配置项
- 类路径下提供一个c3p0.properties文件
- 类路径下提供一个c3p0-config.xml文件
setters
顾名思义,就是一个个地设置各个配置项,这个需要在相关的代码中执行,个人感觉使用起来相对比较费劲。
- Properties props = new Properties();
- InputStream in = ConnectionManager.class.getResourceAsStream("/c3p0.properties");
- props.load(in);
- in.close();
- ComboPooledDataSource cpds = new ComboPooledDataSource();
- cpds.setDriverClass(props.getProperty("driverClass"));
- cpds.setJdbcUrl(props.getProperty("jdbcUrl"));
- cpds.setUser(props.getProperty("user"));
- cpds.setPassword(props.getProperty("password"));
类路径下提供一个c3p0.properties文件
文件的命名必须是c3p0.properties,c3p0会自动加载此资源文件的内容,并按照其中的配置进行数据源管理。文件内容格式类似于:
- c3p0.driverClass=com.mysql.jdbc.Driver
- c3p0.jdbcUrl=jdbc:mysql://localhost:3306/jdbc
记得是c3p0.后面加属性名就是了,最后初始化数据源的方式就是这样简单:
- private static ComboPooledDataSource ds = new ComboPooledDataSource();
-
- public static Connection getConnection() {
- try {
- return ds.getConnection();
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- }
类路径下提供一个c3p0-config.xml文件
这种方式使用方式与第二种差不多,但是有更多的优点
(1)更直观明显,很类似hibernate和spring的配置
(2)可以为多个数据源服务,提供default-config和named-config两种配置方式
- <c3p0-config>
- <default-config>
- <property name="user">root</property>
- <property name="password">java</property>
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
-
- <property name="initialPoolSize">10</property>
- <property name="maxIdleTime">30</property>
- <property name="maxPoolSize">100</property>
- <property name="minPoolSize">10</property>
- </default-config>
-
- <named-config name="myApp">
- <property name="user">root</property>
- <property name="password">java</property>
- <property name="driverClass">com.mysql.jdbc.Driver</property>
- <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
-
- <property name="initialPoolSize">10</property>
- <property name="maxIdleTime">30</property>
- <property name="maxPoolSize">100</property>
- <property name="minPoolSize">10</property>
- </named-config>
- </c3p0-config>
如果要使用default-config则初始化数据源的方式与第二种一样,如果要使用named-config里面配置初始化数据源,则只要使用一个带参数的ComboPooledDataSource构造器就可以了。
- private static ComboPooledDataSource ds = new ComboPooledDataSource("myApp");
转载自:http://blog.csdn.net/cyq1984/article/details/11934897