**spring+hibernate + c3p0 代码整合 **

spring+hibernate + c3p0 代码整合

相关java类
DBconn.java



import java.beans.PropertyVetoException;
import java.io.PrintWriter;
import java.sql.*;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBconn implements DataSource {

    private static Connection conn;
     private static final DBconn instance=new DBconn();   
     private static ComboPooledDataSource cpds=new ComboPooledDataSource(true); 
    static{   



        try {
            cpds.setDriverClass("oracle.jdbc.OracleDriver");
        } catch (PropertyVetoException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        cpds.setAcquireIncrement(100); //当连接池中的连接用完时,C3P0一次性创建新连接的数目

        cpds.setAcquireRetryAttempts(100); //定义在从数据库获取新连接失败后重复尝试获取的次数,默认为30

        cpds.setAcquireRetryDelay(1000); //两次连接中间隔时间,单位毫秒,默认为1000

        cpds.setAutoCommitOnClose(false); //连接关闭时默认将所有未提交的操作回滚。默认为false
        cpds.setBreakAfterAcquireFailure(false);//获取连接失败将会引起所有等待获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调
                                            //用getConnection()的时候继续尝试获取连接。如果设为true,
                                            //那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认为   false
        cpds.setCheckoutTimeout(0);//当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒,默认为0;
        cpds.setMaxIdleTime(10000);//最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0
        cpds.setMinPoolSize(100);//连接池中保留的最小连接数
        cpds.setMaxPoolSize(1000);//接池中保留的最大连接数。默认为15
        cpds.setInitialPoolSize(100);//始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3

        cpds.setMaxStatements(0);//            JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属
                                //          于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与
                                //          maxStatementsPerConnection均为0,则缓存被关闭。默认为0
        cpds.setMaxStatementsPerConnection(30);//连接池内单个连接所拥有的最大缓存Statement数。默认为0;
        cpds.setNumHelperThreads(200);//C3P0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行。默认为3
        cpds.setPropertyCycle(600);//用户修改系统配置参数执行前最多等待的秒数。默认为300
        cpds.setJdbcUrl("*************");//数据库地址
        cpds.setUser("****");//用户名
        cpds.setPassword("*****");//密码
    }

    private DBconn(){}    

    public static DBconn getInstance(){    
        return instance;    
    }    


    @Override
    public Connection getConnection() throws SQLException {
          try {    
                return cpds.getConnection();    
            } catch (SQLException e) {    
                e.printStackTrace();    
            }    
            return null;    
    }

    @Override
    public Connection getConnection(String arg0, String arg1)
            throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public PrintWriter getLogWriter() throws SQLException {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int getLoginTimeout() throws SQLException {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void setLogWriter(PrintWriter arg0) throws SQLException {
        // TODO Auto-generated method stub

    }

    @Override
    public void setLoginTimeout(int arg0) throws SQLException {
        // TODO Auto-generated method stub

    }    

}

配置文件


    <bean id="dataSource" class="DBconn" >
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle9Dialect
            </prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
        <property name="packagesToScan" value="model.*" />

    </bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值