DBPool是一个对连接池进行管理的类,然后使用的是c3p0。其中的main()方法测试了连接池和jdbc的连接数据库速度。
public class DBPool {
private static DBPool dbPool;
private ComboPooledDataSource dataSource;
static {
dbPool = new DBPool();
}
public DBPool() {
try {
dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("123456");
dataSource
.setJdbcUrl("jdbc:mysql://localhost:3306/jwdb");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setInitialPoolSize(2);
dataSource.setMinPoolSize(1);
dataSource.setMaxPoolSize(10);
dataSource.setMaxStatements(50);
dataSource.setMaxIdleTime(60);
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
}
public final static DBPool getInstance() {
return dbPool;
}
public final Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("无法从数据源获取连接 ", e);
}
}
public static void main(String[] args) throws SQLException {
//直接获取数据的测试,跟jdbc类似。
/* Connection con = null;
String sql="select agent_id from agent";
PreparedStatement ps;
//List list=new ArrayList();
try {
con = DBPool.getInstance().getConnection();
ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("agent_id"));
}
} catch (Exception e) {
} finally {
if (con != null)
con.close();
}
*/
System.out.println("使用连接池................................");
for (int i = 0; i < 20; i++) {
long beginTime = System.currentTimeMillis();
Connection conn = DBPool.getInstance().getConnection();
try {
PreparedStatement pstmt = conn
.prepareStatement("SELECT * FROM netbar");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("第" + (i + 1) + "次执行花费时间为:"
+ (endTime - beginTime));
}
System.out.println("不使用连接池................................");
for (int i = 0; i < 20; i++) {
long beginTime = System.currentTimeMillis();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception e1) {
e1.printStackTrace();
}
String url = "jdbc:mysql://localhost:3306/jwdb";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
try {
PreparedStatement pstmt = conn
.prepareStatement("SELECT * FROM netbar");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// do nothing...
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("第" + (i + 1) + "次执行花费时间为:"
+ (endTime - beginTime));
}
}
}
测试结果:
使用连接池................................
第1次执行花费时间为:687
第2次执行花费时间为:16
第3次执行花费时间为:15
第4次执行花费时间为:16
第5次执行花费时间为:94
第6次执行花费时间为:0
第7次执行花费时间为:0
第8次执行花费时间为:16
第9次执行花费时间为:16
第10次执行花费时间为:15
第11次执行花费时间为:16
第12次执行花费时间为:15
第13次执行花费时间为:0
第14次执行花费时间为:16
第15次执行花费时间为:16
第16次执行花费时间为:15
第17次执行花费时间为:16
第18次执行花费时间为:16
第19次执行花费时间为:15
第20次执行花费时间为:0
不使用连接池................................
第1次执行花费时间为:47
第2次执行花费时间为:31
第3次执行花费时间为:32
第4次执行花费时间为:15
第5次执行花费时间为:47
第6次执行花费时间为:16
第7次执行花费时间为:47
第8次执行花费时间为:15
第9次执行花费时间为:31
第10次执行花费时间为:32
第11次执行花费时间为:15
第12次执行花费时间为:32
第13次执行花费时间为:15
第14次执行花费时间为:32
第15次执行花费时间为:31
第16次执行花费时间为:15
第17次执行花费时间为:16
第18次执行花费时间为:31
第19次执行花费时间为:16
第20次执行花费时间为:16
以看出,在使用连接池时,第一次执行花费的时间稍长,因为第一次初始化操作需要创建多个连接并放入池中,以后使用时将会大大缩短执行时间。
在不使用连接池时,每次花费的时间都比较长。
分享到:
相关推荐
C3P0是一个随Hibernate一同分发的开源的JDBC连接池, 它位于lib目录下。 包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象.
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
java使用jdbc连接池时所使用的c3p0工具包,也可在官网下载
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring。
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...
NULL 博文链接:https://263644449.iteye.com/blog/1682739
java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java),里面包含了c3p0-0.9.2-pre1.jar、以及配置文件:c3p0-config.xml、以及一个c3p0数据库连接池工具类(只有简单的两个方法...
JDBC - Java 连接Mysql JDBC连接池使用工具 C3P0 连接池 and druid-1.0.9
c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar
java语言连接Mysql数据库。通过Eclipse集成开发工具,编写java类文件,实现JDBC连接。 通过c3p0连接数据库的三种方法,包括xml文件、properties文件。
dbcp、c3p0、jdbc常用连接xml配置 留此备用 com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar spring-jdbc-3.0.5.RELEASE.jar com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar 详细链接 ...
c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接c3p0 重新自动连接
<c3p0-config> <!--默认配置--> <default-config> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> ...
C3P0数据库连接池jar包,用于开发JAVA的后台数据库连接
DBCP也是一个开源的连接池,是Apache Common成员之一,在企业开发中也比较常见,tomcat内置的连接池。C3P0访问数据库技术,方便快捷,牵扯到的jar包可去网上下载!
其中包含C3P0的jar包,本人测试使用了oracle数据库,因此里面还有oracle jdbc的驱动jar包
c3p0是一款常用的开源数据库连接池,附件是c3p0-0.9.5.2.jar包和配套使用的mchange-commons.jar包及jdbc驱动jar包,欢迎下载~
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比较多。导入相关jar包c3p0-0.9.2-pre1.jar、...
c3p0连接池,java jdbc操作
内含c3p0及jdbc的jar包,c3p0-0.9.5.2-sources.jar 、mchange-commons-java-0.2.11-sources.jar、mysql-connector-java-8.0.11