第三方开源数据库连接池的使用注意事项

1.阿里巴巴的druid(德鲁伊)数据库连接池

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import java.util.Properties;

public class DruidDemo {
    public static void main(String[] args) {
        Properties pro = new Properties();
        DataSource dataSource = null;
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
//            pro.load(DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties"));
			//此配置文件名称任意,但内容必须是properties格式
            pro.load(Objects.requireNonNull(DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties")));

            dataSource = DruidDataSourceFactory.createDataSource(pro);
            connection = dataSource.getConnection();
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select * from user");
            while (resultSet.next()) {
                System.out.println(resultSet.getString("uname"));
            }
            //System.out.println(connection);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}


2.c3p0数据库连接池

  • 配置文件名称必须是c3p0-config.xml
<c3p0-config>
    <!--使用默认的配置读取连接池对象-->
    <default-config>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/users?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">311776</property>
        <property name="initialPoolSize">10</property>

        <!--        <property name="maxIdleTime">30</property>-->
        <property name="checkoutTimeout">3000</property>
        <property name="maxPoolSize">20</property>
        <property name="maxStatements">200</property>
    </default-config>


    <!--使用指定名称的的配置读取连接池对象-->
    <named-config name="mysql">
        <!--连接参数-->
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/users?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">311776</property>
        <!--连接池参数-->
        <!--初始化申请的连接数量-->
        <property name="initialPoolSize">10</property>

        <!--<property name="maxIdleTime">30</property>-->
        <!--超过连接最大超时时间 如果不设置超过最大连接数量会出现拥塞-->
        <property name="checkoutTimeout">3000</property>
        <!--最大的连接数量  -->
        <property name="maxPoolSize">20</property>
        <!--<property name="minPoolSize">5</property>-->
        <property name="maxStatements">200</property>
    </named-config>
</c3p0-config>

测试代码

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;

public class C3p0Test {
    /**
     * c3p0数据库连接池
     * 配置文件名称为c3p0-config.xml
     */
    public static void main(String[] args) throws Exception {
        //c3p0 根据配置文件信息创建数据库连接池
        DataSource ds = new ComboPooledDataSource("mysql");
        for (int i = 0; i < 50; i++) {
            Connection connection = ds.getConnection();
            System.out.println(i+" "+connection);
        }
    }
}

发布了51 篇原创文章 · 获赞 20 · 访问量 1517

猜你喜欢

转载自blog.csdn.net/qq_39711439/article/details/103438908