一、数据库连接池

1、什么是数据库连接池?

2、DataSource 接口 (数据源接口 数据源的具体实现,实现该接口)

3、什么是数据源?

3.1、DBCP 数据源

3.1.1通过BasicDataSource类直接创建数据源
3.1.2通过工厂类BasicDataSourceFactory 读取 配置文件 创建

3.2、c3p0 数据源

3.2.1通过ComboPooledDataSource()构造方法创建数据源
3.2.2通过ComboPooledDataSource(String configName) 读取 配置文件 创建

二、DBCP

IMG20211122150815.jpg
IMG20211122150848.jpg

  1. /**
  2. * @PackageName:cn.qccr.jdbc.pool DBCP是数据源区别C3PO 等其他数据源
  3. * @ClassName:DBCPPoolExample01
  4. * @Description: 第一种实现数据源方式 通过 阿帕奇开源组织 的 DBCP - BasicDataSource对象
  5. * @Author:lyg
  6. * @Date:2021/11/22 15:15
  7. */
  8. public class BasicDataSourceExample01 {
  9. public static DataSource ds = null;
  10. static {
  11. // 获取DBCP 数据源实现类对象
  12. BasicDataSource bds = new BasicDataSource();
  13. // 设置连接数据库需要的 配置信息
  14. bds.setDriverClassName("com.mysql.jdbc.Driver");
  15. bds.setUrl("jdbc:mysql://mysql001.daily.yunhumjk.com:3306/order");
  16. bds.setUsername("admin");
  17. bds.setPassword("Adminyunhu123+");
  18. // 设置连接池参数
  19. bds.setInitialSize(5);
  20. bds.setMaxActive(5);
  21. ds = bds;
  22. }
  23. public static void main(String[] args) throws SQLException {
  24. // 获取数据库连接对象
  25. Connection conn = ds.getConnection();
  26. //获取数据库连接信息
  27. final DatabaseMetaData metaData = conn.getMetaData();
  28. //打印数据库连接信息
  29. System.out.println(metaData.getURL() + "; username=" + metaData.getUserName() + "; " + metaData.getDriverName());
  30. }
  31. }

IMG20211122153055.jpg

  1. /**
  2. * @PackageName:cn.qccr.jdbc.pool DBCP是数据源区别C3PO 等其他数据源
  3. * @ClassName:DBCPPoolExample01
  4. * @Description: 第一种实现数据源方式 通过 阿帕奇开源组织 的 DBCP -
  5. * BasicDataSourceFactory对象 通过配置文件形式加载数据源配置信息
  6. *
  7. * @Author:lyg
  8. * @Date:2021/11/22 15:15
  9. */
  10. public class BasicDataSourceFactoryExample01 {
  11. public static DataSource ds = null;
  12. static {
  13. // 创建一个配置文件对象
  14. Properties prop = new Properties();
  15. try {
  16. InputStream io = new BasicDataSourceFactoryExample01()
  17. .getClass()
  18. .getClassLoader()
  19. .getResourceAsStream("config/dbcpconfig.properties");
  20. // 把文件已输入流的形式加载到配置对象中
  21. prop.load(io);
  22. // 创建数据流对象
  23. ds = BasicDataSourceFactory.createDataSource(prop);
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. public static void main(String[] args) throws SQLException {
  29. // 获取数据库连接对象
  30. Connection conn = ds.getConnection();
  31. //获取数据库连接信息
  32. final DatabaseMetaData metaData = conn.getMetaData();
  33. //打印数据库连接信息
  34. System.out.println(metaData.getURL() + "; username=" + metaData.getUserName() + "; " + metaData.getDriverName());
  35. }
  36. }

三、c3p0

IMG20211122163343.jpg

IMG20211122163355.jpg