1.数据源(连接池)的作用:为了提高程序的性能而出现的
2.数据源的原理:
*事先实例化数据源,初始化部分连接资源
*使用连接资源时从数据源中获取
*使用完毕后将连接资源归还给数据源




使用c3p0的步骤
1.导入相应的依赖(还有jdbc相关的依赖)

 <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1</version>
    </dependency>

2.具体操作

public class DataSourceTest {

    @Test
    //测试手动创建c3p0
    public void test1() throws PropertyVetoException, SQLException {
   		 //实例化c3p0数据源
        ComboPooledDataSource dataSource=new ComboPooledDataSource();
        //设计基本的连接参数
        dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/ssm_crud?serverTimezone=UTC");
        dataSource.setUser("root");
        dataSource.setPassword("hao20001010");
        //获取资源
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        //归还数据源
        connection.close();
    }
}





使用Druid的步骤
1.导入相应依赖

  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.2</version>
    </dependency>

2.具体操作

 @Test
    //测试Druid
    public void test2() throws SQLException {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost/ssm_crud?serverTimezone=UTC");
        dataSource.setUsername("root");
        dataSource.setPassword("hao20001010");
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

我们发现这样耦合度太高,所以我们可以单独创建一个配置文件保存连接配置数据
1.创建jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_crud?serverTimezone=UTC
jdbc.username=root
jdbc.password=hao20001010

2.测试c3p0

  @Test
    //测试手动创建c3p0(加载properties配置文件)
    public void test3() throws PropertyVetoException, SQLException {
        //读取配置文件 -->getBundle获取的是当前工作目录resources下的路径,而且不需要写扩展名.properties
        ResourceBundle rb=ResourceBundle.getBundle("jdbc");
        String driver=rb.getString("jdbc.driver");
        String url = rb.getString("jdbc.url");
        String username = rb.getString("jdbc.username");
        String password = rb.getString("jdbc.password");
        //创建数据源对象,设置连接参数
        ComboPooledDataSource dataSource=new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        //获取资源
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        connection.close();
    }

###-》这是为了解耦

posted on 2020-11-13 17:23  凸凸大军的一员  阅读(110)  评论(0编辑  收藏  举报