本文共 5902 字,大约阅读时间需要 19 分钟。
DBCP(DataBase Connection Pool),[数据库连接池]。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。
单独使用dbcp需要2个包:【commons-dbcp.jar,commons-pool.jar】由于建立数据库连接是一个非常耗时的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。文件名称: dbcp.properties,放到src目录下
#连接设置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/practice?useSSL=true&characterEncoding=utf8username=rootpassword=123456# initialSize=10#最大连接数量maxTotal=50# maxIdle=20# minIdle=5# maxWaitMillis=5000
/*** DBUtils_DBCP工具类*/public class DBUtils_DBCP { private static BasicDataSource dataSource; static { try { Properties properties = new Properties(); //类加载器获取properties文件 InputStream is = DBUtils_DBCP.class.getClassLoader().getResourceAsStream("dbcp.properties"); properties.load(is); //调取数据源工厂,并使用创建数据源的方法,将properties文件导入 dataSource = BasicDataSourceFactory.createDataSource(properties); is.close(); } catch (Exception e) { e.printStackTrace(); } } //对外提供获取连接的方法 public static Connection getConnections() { try { Connection connection = dataSource.getConnection(); return connection; } catch (SQLException e) { System.out.println("获取失败"); e.printStackTrace(); } return null; }}/*** 测试*/@Testpublic void testDBCP() { for (int i = 0; i < 100; i++) { Connection connection = DBUtils_DBCP.getConnections(); System.out.println("获取了:" + connection.hashCode()); try { connection.close(); //回收,并没有关闭,而是将连接放回池中 } catch (SQLException e) { e.printStackTrace(); } }}
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
DBCP | C3P0 |
---|---|
dbcp没有自动回收空闲连接的功能 | c3p0有自动回收空闲连接功能 |
dbcp需要手动加载配置文件 | c3p0自动加载 |
创建项目
导入jar包
c3p0-0.9.1.2.jar
mchange-commons-java-0.2.11.jar mysql驱动包
添加配置文件
c3p0是在外部添加配置文件,工具直接进行应用,因为直接引用,所以要求固定的命名和文件位置
文件位置: src 文件命名:c3p0-config.xml / c3p0.properties,名字不能出错
XML文件
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/school root root 10000 30 10 5 30 50 5 com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/day2 root 111 5 20 10 40
properties文件
c3p0.driverClass=com.mysql.jdbc.Driverc3p0.jdbcUrl=jdbc:mysql://localhost:3306/practice?useSSL=true&characterEncoding=utf8&rewriteBatchedStatements=truec3p0.user=rootc3p0.password=123456c3p0.acquireIncrement=5c3p0.initialPoolSize=20c3p0.minPoolSize=10c3p0.maxPoolSize=50
/*** DBUtils_C3p0工具类*/public class DBUtils_C3p0 { private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); public static Connection getConnections() { try { Connection connection = dataSource.getConnection(); return connection; } catch (SQLException e) { System.out.println("获取失败"); e.printStackTrace(); } return null; }}/*** 测试*/@Testpublic void testC3p0() { for (int i = 0; i < 100; i++) { Connection connection = DBUtils_C3p0.getConnections(); System.out.println("获取了" + i + connection.hashCode()); try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } }}
Druid 是目前比较流行的高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)。它有如下几个特点:
一. 亚秒级查询 druid提供了快速的聚合能力以及亚秒级的OLAP查询能力,多租户的设计,是面向用户分析应用的理想方式。二.实时数据注入
druid支持流数据的注入,并提供了数据的事件驱动,保证在实时和离线环境下事件的实效性和统一性三.可扩展的PB级存储
druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性四.多环境部署
druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等五.丰富的社区
druid拥有丰富的社区,供大家学习#连接设置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/practice?useSSL=true&characterEncoding=utf8username=rootpassword=123456# initialSize=10#最大连接数量maxActive=50# minIdle=5# maxWait=5000
/*** DBUtils_druid工具类*/public class DBUtils_druid { private static DruidDataSource dataSource; static { try { Properties properties = new Properties(); InputStream is = DBUtils_druid.class.getClassLoader().getResourceAsStream("database.properties"); properties.load(is); //同样需要数据源工厂的创建数据源方法,导入properties文件 dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties); is.close(); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnections() { try { Connection connection = dataSource.getConnection(); return connection; } catch (SQLException e) { System.out.println("获取失败"); e.printStackTrace(); } return null; }}/*** 测试*/@Testpublic void testDruid() { for (int i = 0; i < 100; i++) { Connection connection = DBUtils_druid.getConnections(); System.out.println("获取了" + i + connection.hashCode()); try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } }}
转载地址:http://psgzi.baihongyu.com/