开发者社区> 涂作权> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

02_c3p0之c3p0-config.xml配置案例,操作c3p0的jdbcUtil工具类的编写

简介:  c3p0也是一个开源jdbc连接池,我们熟悉的Hibernate和Spring框架使用的都是该数据源。   这里获得数据源使用的方法是:ComboPooledDataSource 它提供的构造方法有: ComboPooledDataSource()             ComboPooledDa
+关注继续查看


c3p0也是一个开源jdbc连接池,我们熟悉的HibernateSpring框架使用的都是该数据源。

 

这里获得数据源使用的方法是:ComboPooledDataSource

它提供的构造方法有:

ComboPooledDataSource()
           

ComboPooledDataSource(boolean autoregister)
           

ComboPooledDataSource(java.lang.String configName)

通过第三个构造方法读取配置文件,它的配置文件是一个xml文件,也可以是一个properties文件。

 

c3po中的ComboPooledDataSource提供了如下方法:

setDriverClass: 设置驱动使用的是

setJdbcUrl:设置url

setInitialPoolSize(int initialPoolSize)

setPassword:设置密码

setUser:设置用户名

 

 

不适用配置文件的使用方法:

package cn.toto.utils;

 

import java.beans.PropertyVetoException;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import com.mchange.v2.c3p0.ComboPooledDataSource;

 

public class JdbcUtils {

    private static DataSource ds;

   

    static {

       try {

           //初始化c3p0连接池

           ComboPooledDataSource cpds = new ComboPooledDataSource();

           cpds.setDriverClass("com.mysql.jdbc.Driver");

           cpds.setJdbcUrl("jdbc:mysql://localhost:3306/day14");

           cpds.setUser("root");

           cpds.setPassword("123456");

          

           cpds.setInitialPoolSize(5);

           cpds.setMaxPoolSize(20);

          

           ds =cpds;

       } catch (PropertyVetoException e) {

           throw new ExceptionInInitializerError("属性不匹配的错误");

       }

    }

   

    //获取与指定数据的连接

    public static DataSource getSource(){

       return ds;

    }

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       //从连接池返回一个连接

       return ds.getConnection();

    }

    //释放资源

    public static void release(ResultSet rs,Statement stmt,Connection conn) {

       if(rs!=null){

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt=null;

       }

       if(conn!=null){

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

}

 

 

用于测试的主方法:

package cn.toto.demo;

 

import java.sql.Connection;

import java.sql.SQLException;

 

import cn.toto.utils.JdbcUtils;

 

public class Demo {

 

    public static void main(String[] args) throws SQLException {

       Connection conn = JdbcUtils.getConnection();

       System.out.println(conn);

//结果是:com.mchange.v2.c3p0.impl.NewProxyConnection@10bbf9e

    }

 

}

 

通过配置文件的方式读取文件。

当通过设置配置文件xml时它可以自动查找,不用通过类加载的方式了。只要它的文件路径是在classloader(类路径也可以说是classes下面)的路径下面。(在官方文档中可以找到配置文件)

配置文件好后的文件是:

<?xml version="1.0"encoding="UTF-8"?>

<c3p0-config>

    <default-config>

       <property name="automaticTestTable">con_test</property>

       <property name="checkoutTimeout">30000</property>

       <property name="idleConnectionTestPeriod">30</property>

       <property name="initialPoolSize">10</property>

       <property name="maxIdleTime">30</property>

       <property name="maxPoolSize">100</property>

       <property name="minPoolSize">10</property>

       <property name="maxStatements">200</property>

       <user-overrides user="test-user">

           <property name="maxPoolSize">10</property>

           <property name="minPoolSize">1</property>

           <property name="maxStatements">0</property>

       </user-overrides>

    </default-config>

    <named-config name="toto">

       <property name="initialPoolSize">5</property>

       <property name="maxPoolSize">20</property>

       <property name="driverClass">com.mysql.jdbc.Driver</property>

       <property name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>

       <property name="user">root</property>

       <property name="password">123456</property>

    </named-config>

</c3p0-config>

 

 

这时写好的JdbcUtils是:

package cn.toto.utils;

 

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.sql.DataSource;

 

import com.mchange.v2.c3p0.ComboPooledDataSource;

 

public class JdbcUtils {

    private static DataSourceds;

   

    static {

       //ds = new ComboPooledDataSource();//默认的缺省的配置

       ds = new ComboPooledDataSource("toto");//配置文件中设置的内容不用写其他的是因为它可以自动查找classloader下的c3p0-config.xml文件(要注意的是文件的名称必须是c3p0-config.xml)如果文件的名称不是这个,将出现错误。

    }

   

    //获取与指定数据的连接

    public static DataSourcegetSource(){

       return ds;

    }

   

    //获得与指定数据库的连接

    public static Connection getConnection() throws SQLException {

       //从连接池返回一个连接

       return ds.getConnection();

    }

    //释放资源

    public static void release(ResultSet rs,Statement stmt,Connection conn) {

       if(rs!=null){

           try{

              rs.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           rs = null;

       }

       if(stmt!=null){

           try{

              stmt.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           stmt=null;

       }

       if(conn!=null){

           try{

              conn.close();

           }catch(SQLException e){

              e.printStackTrace();

           }

           conn = null;

       }

    }

 

}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
c3p0 连接池的基本使用方式| 学习笔记
快速学习 c3p0 连接池的基本使用方式.
5 0
c3p0 连接的配置文件使用 | 学习笔记
快速学习 c3p0 连接的配置文件使用.
8 0
c3p0 连接池的基本使用方式| 学习笔记
快速学习 c3p0 连接池的基本使用方式.
89 0
c3p0连接池的用法
使用DButils进行连接并对数据库进行操作
777 0
java版电子商务spring cloud分布式微服务b2b2c社交电商- commonservice-config配置服务搭建
介绍 Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。
2930 0
JNDIUtil、DBCPUtil、C3P0Util,三种数据源的工具类的区别?
JNDIUtil、DBCPUtil、C3P0Util,三种数据源的工具类答:  为什么使用JNDIUtil呢?因为它更接近于实际开发,因为它是配置在tomcat里面的,JNDI是一个容器,是一个Map集合,  是key和value的形式。
1498 0
C3P0连接池
做常用的连接池技术!Spring框架,默认支持C3P0连接池技术。 核心类 CombopooledDataScore ds; 基本使用 1.下载,导包 2.
1353 0
x3d
FreeBSD的新一代包管理工具Pkg 1.3.0 发布
Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级。 Pkg 1.3.0 发布,此版本是 29 个贡献者 9 个月辛苦开发的成果,包括 373 个文件修改。
796 0
+关注
涂作权
java,架构,编程语言相关专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载