栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC——如何使用数据库连接池(DBCP,C3P0,Druid),超详细

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC——如何使用数据库连接池(DBCP,C3P0,Druid),超详细

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。在实际开发中是非常重要的,所以值得我们去深入学习。
使用数据库连接池代替了我们通常所说的五种方式。在我的上篇文章中有介绍数据库的连接:JDBC连接Mysql数据(从简单到实用,超详细)

常见数据库连接池
  • DBCP
  • C3P0
  • Druid

JDBC 的数据库连接池使用Javax.sql.DataSource来表示,DataSource只是一个接口,该接口由服务器提供,也有一些开源的组织提供。DataSource通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上它也被称为连接池。
DataSource用来取代DriverManager来获取Connection,速度快,同时大幅度提高了数据库访问速度。
下面介绍三种常见的数据库连接技术。在使用数据库连接池时,需要导入第三方的Jar包。以下三种方式默认已导入。

DBCP

是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);
		
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/933740.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号