由于以前做的项目没用mysql是用自己的连接池. 新启一个工程用到mysql,mysql对于连接超过8小时,就会断开连接. 在网上查了下,说c3p0可以解决该问题. 找了点资料,配置后写代码测试,发觉c3p0也并没有提高效率,难道是我代码写错了.
因为c3p0每次都得释放连接,感觉用不用作用不太大.
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.rowset.CachedRowSet;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.sun.rowset.CachedRowSetImpl;
import com.zhongwei.connectionpool.ConnectionPool;
public class ConnectionManager
{
private static ConnectionManager instance;
private static ComboPooledDataSource dataSource;
private ConnectionManager() throws IOException, SQLException,
PropertyVetoException
{
Properties p = new Properties();
p.load(this.getClass().getResourceAsStream("c3p0.properties"));
dataSource = new ComboPooledDataSource();
dataSource.setProperties(p);
System.out.println(p.getProperty("password"));
dataSource.setUser(p.getProperty("user"));
dataSource.setPassword(p.getProperty("password"));
dataSource.setJdbcUrl(p.getProperty("jdbcUrl"));
dataSource.setDriverClass(p.getProperty("driverClass"));
dataSource.setInitialPoolSize(Integer.valueOf(p.getProperty("initialPoolSize")));
dataSource.setMinPoolSize(Integer.valueOf(p.getProperty("minPoolSize")));
dataSource.setMaxPoolSize(Integer.valueOf(p.getProperty("maxPoolSize")));
dataSource.setMaxStatements(Integer.valueOf(p.getProperty("maxStatements")));
dataSource.setMaxIdleTime(Integer.valueOf(p.getProperty("maxIdleTime")));
dataSource.setPreferredTestQuery(p.getProperty("preferredTestQuery"));
dataSource.setIdleConnectionTestPeriod(Integer.valueOf(p.getProperty("idleConnectionTestPeriod")));
dataSource.setTestConnectionOnCheckout(Boolean.valueOf(p.getProperty("testConnectionOnCheckout")));
dataSource.setTestConnectionOnCheckin(Boolean.valueOf(p.getProperty("testConnectionOnCheckin")));
dataSource.setAcquireIncrement(Integer.valueOf(p.getProperty("acquireIncrement")));
dataSource.setAcquireRetryAttempts(Integer.valueOf(p.getProperty("acquireRetryAttempts")));
dataSource.setAcquireRetryDelay(Integer.valueOf(p.getProperty("acquireRetryDelay")));
dataSource.setAutomaticTestTable(p.getProperty("automaticTestTable"));
dataSource.setCheckoutTimeout(Integer.valueOf(p.getProperty("checkoutTimeout")));
dataSource.setAutoCommitOnClose(Boolean.valueOf(p.getProperty("autoCommitOnClose")));
}
public static final ConnectionManager getInstance()
{
if (instance == null)
{
try
{
instance = new ConnectionManager();
}
catch (Exception e)
{
e.printStackTrace();
}
}
return instance;
}
public synchronized final Connection getConnection()
{
Connection connection = null;
try
{
connection = dataSource.getConnection();
}
catch (Exception e)
{
e.printStackTrace();
}
return connection;
}
public static void main(String[] args) throws Exception
{
System.out.println("开始使用连接池...");
PreparedStatement pst = null;
for(int i=0;i<10;i++)
{
long beginTime = System.currentTimeMillis();
ConnectionManager inManager = ConnectionManager.getInstance();
Connection conn = inManager.getConnection();
try
{
pst = conn.prepareStatement("select * from tb_smsqueue");
ResultSet rs = pst.executeQuery();
rs.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
//这里每次要释放连接,用不用连接池有什么作用?
if(pst != null)
{
pst.close();
conn.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("第" + (i + 1) + "次执行花费时间为:" + (endTime - beginTime));
}
}
properties就不贴出来了
分享到:
相关推荐
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...
c3p0数据库连接池
数据库连接池的基本原理就是为数据库建立一个缓冲池。在缓冲池中先创建指定数量的数据库连接,当有连接请求时就从缓冲池中取出处于“空闲”状态的连接,并将此连接标记为“忙碌”,直到该请求进程结束后,它所使用的...
C3P0数据库连接池jar包(完整版)
java开发,数据库连接池c3p0所需jar包。
c3p0数据库连接池案例,java项目,例子结构清晰,适合新手学习
c3p0数据库连接池技术实例,包括了c3p0的jar包等,直接导入到eclipse或者myeclipse的工作空间后即可在Tomcat里运行
c3p0数据库连接池jar包配置文件及依赖
包含了连接数据库连接池所需的大部分jar包
这里有关于吃c3p0数据库连接池所需要的jar包。。。。。。。。。。。。
java中c3p0数据库连接池使用方法(c3p0-config.xml+c3p0-0.9.2-pre1.jar+JdbcPool_c3p0.java),里面包含了c3p0-0.9.2-pre1.jar、以及配置文件:c3p0-config.xml、以及一个c3p0数据库连接池工具类(只有简单的两个方法...
此为c3p0-0.9.5.2版jar架包及源码,xxx-sources.jar是源码jar,可以不导入,想查看源码时再关联
hibernate c3p0 数据库 连接池 参数 详解
c3p0 数据库连接池 源码 写了一个c3p0 连接查询,和一般的JDBC查询速率对比。下载测试需要导入c3p0 的jar包
C3P0是数据库连接池插件jar包,导入eclipse即可
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
用于连接c3p0数据库连接池,实现数据池的连接,可用于MySQL,SQL sever等数据库