学习c3p0连接池的原理与使用总结

原理:为什么要有c3p0?c3p0的作用是什么?

  • 在使用JDBC操作数据库时,我们一般有几个基本的步骤(加载驱动、建立连接、创建语句、执行语句、关闭资源),其中建立连接是一个重要的步骤,每操作一次数据库我们都需要获取一个Connection,当数据库操作不是很频繁时,没多大关系,可是一旦高并发的情况下,几千个线程需要获取连接的时候,那么连接的创建将会是一个非常耗时和耗空间的操作,创建的初始化需要一定的时间,这在一定程度上会影响性能。

  • 基于此种情况,c3p0将在池中先创建一些连接Connection,等线程需要使用的时候直接拿就行,缩短了创建的时间,提高了响应速度。在使用完之后连接释放之后放回池中,但并未真正的关闭资源,等待下一次任务获取。

下面是c3p0的使用:

  1. 新建项目导入jar包
    在这里插入图片描述
  2. 配置文件

<c3p0-config>
    <default-config>
        <property name="initialPoolSize">10property>
        <property name="maxIdleTime">30property>
        <property name="maxPoolSize">100property>
        <property name="minPoolSize">10property>
        <property name="maxStatements">200property>
    default-config>
    
    <named-config name="mysql">
        <property name="driverClass">com.mysql.jdbc.Driverproperty>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/testtestproperty>
        
        <property name="user">rootproperty>
        <property name="password">rootproperty>
     
        <property name="initialPoolSize">10property>
          
        <property name="maxIdleTime">30property>  
        
        <property name="maxPoolSize">100property> 
         
        <property name="minPoolSize">10property>   
         
        <property name="maxStatements">200property>  
           
        
        <property name="checkoutTimeout">3000property> 
           
         
         <property name="acquireIncrement">2property>
           
          
        <property name="acquireRetryAttempts">0property>
           
        
        <property name="acquireRetryDelay">1000property>
           
        <property name="autoCommitOnClose">falseproperty>  
           
        <property name="automaticTestTable">Testproperty> 
            
        <property name="breakAfterAcquireFailure">falseproperty>
           
        <property name="idleConnectionTestPeriod">60property>    
           
        <property name="maxStatementsPerConnection">0property> 
        
    named-config>  
      
      
      
c3p0-config>

注意:此种写法错误会报Failed to coerce property: acquireIncrement [propVal: ; propType: int]
java.lang.NumberFormatException: For input string: “” 异常

正确写法: 2
  1. 获取Connection连接类
    学习c3p0连接池的原理与使用总结_第1张图片

  2. 测试类
    学习c3p0连接池的原理与使用总结_第2张图片

你可能感兴趣的:(数据库,c3p0)