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();
}
###-》这是为了解耦