创建C3P0数据源

[Author]: kwu

创建C3P0数据源,实际开发中直接用JDBC连接数据库是非常少的,一般使用数据源的形式,C3P0是开源的数据源,实际项目用得很多:


1、增加maven的支持

[plain]  view plain copy
  1. <dependency>  
  2.     <groupId>c3p0</groupId>  
  3.     <artifactId>c3p0</artifactId>  
  4.     <version>0.9.1.2</version>  
  5. </dependency>  

2、配置 C3P0,默认配置文件c3p0-config.xml:

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <c3p0-config>  
  4.   
  5.   <named-config name="c3p0">   
  6.       
  7.     <property name="user">root</property>  
  8.     <property name="jdbcUrl">jdbc:mysql://localhost:3306/charts</property>  
  9.     <property name="driverClass">com.mysql.jdbc.Driver</property>  
  10.     <property name="password">root</property>  
  11.   
  12.     <property name="acquireIncrement">5</property>  
  13.     <property name="initialPoolSize">5</property>  
  14.     <property name="minPoolSize">5</property>  
  15.     <property name="maxPoolSize">10</property>  
  16.   
  17.     <property name="maxStatements">25</property>   
  18.     <property name="maxStatementsPerConnection">5</property>  
  19.   
  20.   </named-config>  
  21.   
  22. </c3p0-config>  

3、引用数据源

[java]  view plain copy
  1. package com.hexun.utils;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7.   
  8. import javax.sql.DataSource;  
  9.   
  10. import com.mchange.v2.c3p0.ComboPooledDataSource;  
  11. /** 
  12.  * JDBC 的工具类 
  13.  *  
  14.  * 其中包含: 获取数据库连接, 关闭数据库资源等方法. 
  15.  */  
  16. public class JDBCTools {  
  17.       
  18.     //处理数据库事务的  
  19.     //提交事务  
  20.     public static void commit(Connection connection){  
  21.         if(connection != null){  
  22.             try {  
  23.                 connection.commit();  
  24.             } catch (SQLException e) {  
  25.                 e.printStackTrace();  
  26.             }  
  27.         }  
  28.     }  
  29.       
  30.     //回滚事务  
  31.     public static void rollback(Connection connection){  
  32.         if(connection != null){  
  33.             try {  
  34.                 connection.rollback();  
  35.             } catch (SQLException e) {  
  36.                 e.printStackTrace();  
  37.             }  
  38.         }  
  39.     }  
  40.       
  41.     //开始事务  
  42.     public static void beginTx(Connection connection){  
  43.         if(connection != null){  
  44.             try {  
  45.                 connection.setAutoCommit(false);  
  46.             } catch (SQLException e) {  
  47.                 e.printStackTrace();  
  48.             }  
  49.         }  
  50.     }  
  51.       
  52.     private static DataSource dataSource = null;  
  53.   
  54.     //数据库连接池应只被初始化一次.   
  55.     static{  
  56.         dataSource = new ComboPooledDataSource("c3p0");  
  57.     }  
  58.       
  59.     public static Connection getConnection() throws Exception {  
  60.         return dataSource.getConnection();  
  61.     }  
  62.   
  63.     public static void releaseDB(ResultSet resultSet, Statement statement,  
  64.             Connection connection) {  
  65.   
  66.         if (resultSet != null) {  
  67.             try {  
  68.                 resultSet.close();  
  69.             } catch (SQLException e) {  
  70.                 e.printStackTrace();  
  71.             }  
  72.         }  
  73.   
  74.         if (statement != null) {  
  75.             try {  
  76.                 statement.close();  
  77.             } catch (SQLException e) {  
  78.                 e.printStackTrace();  
  79.             }  
  80.         }  
  81.   
  82.         if (connection != null) {  
  83.             try {  
  84.                 //数据库连接池的 Connection 对象进行 close 时  
  85.                 //并不是真的进行关闭, 而是把该数据库连接会归还到数据库连接池中.   
  86.                 connection.close();  
  87.             } catch (SQLException e) {  
  88.                 e.printStackTrace();  
  89.             }  
  90.         }  
  91.     }  
  92.   
  93. }  

引用时直接调用静态方法即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值