Database connection pool, DBUtil template, dbcp, c3p0

Database connection pool, DBUtil template, Druid use (Key)

A, DBUtil template

public class DBUtilTest {

    public static Connection connection;
    public static final String URL = "jdbc:mysql:///demo";
    public static final String USERNAME = "";
    public static final String PASSWORD = "";

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static void testQuery() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "select * from emp where id = ?";
        QueryRunner runner = new QueryRunner();
        Emp query = runner.query(connection, sql, new BeanHandler<Emp>(Emp.class), 1);
        System.out.println(query);
    }

    public static void testQuery2() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "select * from emp";
        QueryRunner runner = new QueryRunner();
        List<Emp> query = runner.query(connection, sql, new BeanListHandler<Emp>(Emp.class));
        query.forEach((x)->{
            System.out.println(x);
        });
    }

    public static void insert() throws SQLException {
        connection = DriverManager.getConnection(URL,USERNAME,PASSWORD);
        String sql = "insert emp values(null,?,?)";
        QueryRunner runner = new QueryRunner();
        runner.update(connection,sql,1,2);
    }
    public static void main(String[] args) throws SQLException {
        testQuery2();
    }
}

Second, the database connection pool

Database connection pool is to reduce the time of frequent switching connection, it should have several properties Analysis

1. Initial Size

2. Each expansion size

3. The maximum number of connection pools

4. idle connection time of death

A variety of database connection pool

  • DBCP
  • C3P0
  • Druid
  • hikariCP
2.1.DBCP template
public static void main(String[] args) throws SQLException {
        // 数据库连接池资源
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        basicDataSource.setUrl("jdbc:mysql:///demo");
        basicDataSource.setUsername("");
        basicDataSource.setPassword("");

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet rs = null;

        connection = basicDataSource.getConnection();
        String sql = "select * from emp";
        preparedStatement = connection.prepareStatement(sql);
        rs = preparedStatement.executeQuery();
        while (rs.next()){
            System.out.println(rs.getInt(1)+
                    rs.getString(2)+
                    rs.getString(3));
        }
        connection.close();
    }
2.2.C3P0
public static void main(String[] args) throws PropertyVetoException, SQLException {
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setDriverClass( "com.mysql.cj.jdbc.Driver" ); //loads the jdbc driver
    cpds.setJdbcUrl( "jdbc:mysql://120.78.206.78:3306/demo" );
    cpds.setUser("root");
    cpds.setPassword("Root123..");
    cpds.setMaxStatements( 180 );
    Connection conn = cpds.getConnection();
    System.out.println(conn);
    conn.close();
}

The second reference to the official website, a xml configuration

2.3.druid

druid best performance database connection pool

dbcp and c3p0 difference, c3p0 automatically reclaims unused connection

Guess you like

Origin www.cnblogs.com/littlepage/p/11876764.html