三款连接池(DBCP+C3P0+Druid)

什么是连接池:

存放由一定数量的连接对象。以便重复利用这个连接对象

为什么要使用连接池?

由于建立数据库连接是一种非常耗时、耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,使用完毕后再归还到连接池中。

下边介绍常用的三种连接池

DBCP

DBCP由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开

方法1(不推荐)

第一种方式硬编码的方式,就是将连接参数写在代码里面:
第一步:导入jar包
第二步:依赖

	 public class MyDemo {
	  public static void main(String[] args) throws Exception {
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUrl("jdbc:mysql://localhost:3306/mydb");
    ds.setUsername("root");
    ds.setPassword("root");
    //ds.setMaxWait(5000);
    //获取连接对象
    Connection conn = ds.getConnection();

    //获取操作对象
    PreparedStatement preparedStatement = conn.prepareStatement("select * from user");
    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()){
        System.out.println(resultSet.getInt(1));
        System.out.println(resultSet.getString(2));
    }


    //释放资源
    conn.close();
    resultSet.close();
    preparedStatement.close();
}
	}
}

方法2(推荐使用):

通过采用配置文件的方式,推荐使用
第一步:导入jar包
第二步:依赖
第三步:建立dbcp.properties配置文件

public class MyTest2 {
public static void main(String[] args) throws Exception {
    //采用配置文件的方式,来使用DBCP
    //创建 一个工厂
    Properties properties = new Properties();
    properties.load(new FileReader("src/dbcp.properties"));
    DataSource ds = new BasicDataSourceFactory().createDataSource(properties);
    Connection connection = ds.getConnection();

    //获取连接对象
    Connection conn = ds.getConnection();

    //获取操作对象
    PreparedStatement preparedStatement = conn.prepareStatement("select * from user");
    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {
        System.out.println(resultSet.getInt(1));
        System.out.println(resultSet.getString(2));
    }

    //释放资源
    conn.close();
    resultSet.close();
    preparedStatement.close();


}
}

C3P0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展,目前使用它的开源项目有Hibernate、Spring等。

c3p0与dbcp区别

dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能

方法1(不推荐)

第一种方式硬编码的方式,就是将连接参数写在代码里面:

第一步:导入jar包
第二步:依赖

public class C3p0Demo {
public static void main(String[] args) throws PropertyVetoException, SQLException {
  

	 硬编码,将数据库的参数,用代码来设置
    ComboPooledDataSource ds = new ComboPooledDataSource();
    ds.setDriverClass("com.mysql.jdbc.Driver");
    ds.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
    ds.setUser("root");
    ds.setPassword("123456");

    Connection conn = ds.getConnection();


    //获取操作对象
    PreparedStatement preparedStatement = conn.prepareStatement("select * from user");
    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {
        System.out.println(resultSet.getInt(1));
        System.out.println(resultSet.getString(2));
    }

    //释放资源
    conn.close();
    resultSet.close();
    preparedStatement.close();


}
}

方式2:(推荐):

通过采用配置文件的方式,推荐使用
第一步:导入jar包
第二步:依赖
第三步:建立dbcp.properties配置文件

public class C3p0Demo2 {
public static void main(String[] args) throws SQLException {
    //采用配置文件的方式,来使用C3p0
    //C3p0 对配置文件由以下要求,1.配置文件的名称固定的 2.配置文件必须放到src下

    //如果要使用xml配置文件中的第二配置,那么就把第二配置的名称传过来
    ComboPooledDataSource ds = new ComboPooledDataSource("MyConfig");
    //获取连接对象
    Connection conn = ds.getConnection();


    //获取操作对象
    PreparedStatement preparedStatement = conn.prepareStatement("select * from user");
    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {
        System.out.println(resultSet.getInt(1));
        System.out.println(resultSet.getString(2));
    }

    //释放资源
    conn.close();
    resultSet.close();
    preparedStatement.close();
}
}

Druid(阿里德鲁伊地表最强)

方法1(不推荐)

第一种方式硬编码的方式,就是将连接参数写在代码里面:

第一步:导入jar包
第二步:依赖

public class DriudDemo {
public static void main(String[] args) throws Exception {
    //创建数据源
    DruidDataSource ds = new DruidDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUrl("jdbc:mysql:///mydb");
    ds.setUsername("root");
    ds.setPassword("123456");
    //获取连接对象
    DruidPooledConnection connection = ds.getConnection();
    System.out.println(connection);
    //获取操作对象
    //connection.prepareStatement("");

}

方式2:(推荐):

通过采用配置文件的方式,推荐使用
第一步:导入jar包
第二步:依赖
第三步:建立dbcp.properties配置文件

public class DriudDemo {
public static void main(String[] args) throws Exception {
    Properties properties = new Properties();
    properties.load(new FileReader("src/druid.properties"));

    //通过一个工厂类,创建一个数据源

    DataSource ds =new DruidDataSourceFactory().createDataSource(properties);
    Connection connection = ds.getConnection();
    System.out.println(connection);

    //获取操作对象
    PreparedStatement preparedStatement = connection.prepareStatement("");

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值