Tomcat 的JDBC Pool应用示例

本文介绍了一种通过使用连接池技术来提高数据库连接效率的方法。通过对比物理连接的方式,使用Tomcat自带的JDBC连接池可以显著减少系统资源消耗并提升应用程序性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我们在进行数据库连接时,采用物理连接方式连接数据库非常消耗系统时间,物流连接实例如下:


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

//这里我是用的postgresql数据库
public class DBFactory2 {
	private final String driver = "org.postgresql.Driver";
	private final String url = "jdbc:postgresql://localhost:5432/jspdb?useUnicode=true&characterEncoding=UTF-8";
	private final String user = "postgres";
	private final String password = "182085";
	public static DBFactory2 INSTANCE;
	static {
		INSTANCE = new DBFactory2();
}
	private DBFactory2() {	super();	}
	public Connection getConnection() {
	     Connection conn = null;
	     try {
		Class.forName(driver);
		conn = DriverManager.getConnection(url, user, password);
	     } catch (Exception e) { e.printStackTrace(); }
	     return conn;
  }


	  public void closeConn(Connection conn) {
	     try {
	if (conn != null) {  conn.close(); }
     } catch (SQLException e) {  e.printStackTrace();  }
  }
	  }
	      
为了缩短时间,我们可以建立一个“连接池”,每一个物理连接成为“池”中的对象(称之为池化),连接池技术可以大幅度提升连接数据库的效率和应用程序的性能
这里我用的是tomcat自带的JDBC Pool,主要是为了方便不用去下载东西
import java.sql.Connection;
import java.sql.SQLException;


import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;


public class DBFactory {
private static DataSource datasource;
public static DBFactory INSTANCE;
    static {
INSTANCE = new DBFactory();
setupJdbcPool();
    }
    public Connection getConnection() {
Connection conn = null;
try {
      conn = datasource.getConnection();
} catch (SQLException e) { }
return conn;
    }
    private static void  setupJdbcPool() {
    PoolProperties p = new PoolProperties();
    p.setDriverClassName("org.postgresql.Driver");
    p.setUrl("jdbc:postgresql://localhost:5432/jspdb?useUnicode=true&characterEncoding=UTF-8");
    p.setUsername("postgres");
    p.setPassword("182085");
    p.setMaxActive(100);
    p.setInitialSize(10);
    p.setMaxWait(10000);
    p.setMaxIdle(50);
    p.setMinIdle(10);
    p.setDefaultAutoCommit(true);
      datasource = new DataSource();
            datasource.setPoolProperties(p);


    }
public void closeConn(Connection conn) {
// TODO Auto-generated method stub

}

}

这样连接池就可以直接拿去用了

来源:陈岗老师ppt


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值