常见数据库连接池数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。在实际开发中是非常重要的,所以值得我们去深入学习。
使用数据库连接池代替了我们通常所说的五种方式。在我的上篇文章中有介绍数据库的连接:JDBC连接Mysql数据(从简单到实用,超详细)
- DBCP
- C3P0
- Druid
DBCPJDBC 的数据库连接池使用Javax.sql.DataSource来表示,DataSource只是一个接口,该接口由服务器提供,也有一些开源的组织提供。DataSource通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上它也被称为连接池。
DataSource用来取代DriverManager来获取Connection,速度快,同时大幅度提高了数据库访问速度。
下面介绍三种常见的数据库连接技术。在使用数据库连接池时,需要导入第三方的Jar包。以下三种方式默认已导入。
是Apache提供的数据库连接池,Tomcat自带数据库连接池,速度比C3P0快,但因自身存在Bug,Hibernate3已不再提供支持。
方式一:不推荐
public void testGetConnection() throws SQLException{
//创建了DBCP的数据库连接池
BasicDataSource source = new BasicDataSource();
//设置基本信息
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl("jdbc:mysql:///test");
source.setUsername("root");
source.setPassword("abc123");
//还可以设置其他涉及数据库连接池管理的相关属性:
source.setInitialSize(10);
source.setMaxActive(10);
//。。。
Connection conn = source.getConnection();
System.out.println(conn);
}
方式二:推荐:使用配置文件
public void testGetConnection1() throws Exception{
Properties pros = new Properties();
//方式1:
// InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties");
//方式2:
FileInputStream is = new FileInputStream(new File("src/dbcp.properties"));
pros.load(is);
DataSource source = BasicDataSourceFactory.createDataSource(pros);
Connection conn = source.getConnection();
System.out.println(conn);
}
}
C3P0
一个开源组织提供的数据库连接池,速度较慢,稳定性还可以。
方式一:
在这里插入代码片public void testGetConnection() throws Exception{
//获取c3p0数据库连接池
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" );
cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/test" );
cpds.setUser("root");
cpds.setPassword("abc123");
//通过设置相关的参数,对数据库连接池进行管理:
//设置初始时数据库连接池中的连接数
cpds.setInitialPoolSize(10);
Connection conn = cpds.getConnection();
System.out.println(conn);
//销毁c3p0数据库连接池
// DataSources.destroy( cpds );
}
方式二:使用配置文件
public void testGetConnection1() throws SQLException{
ComboPooledDataSource cpds = new ComboPooledDataSource("hellc3p0");
Connection conn = cpds.getConnection();
System.out.println(conn);
}
Druid
是阿里提供的数据库连接池,是开发中常用的。
public void getConnection() throws Exception{
Properties pros = new Properties();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("druid.properties");
pros.load(is);
DataSource source = DruidDataSourceFactory.createDataSource(pros);
Connection conn = source.getConnection();
System.out.println(conn);
}



