• 使用连接池管理数据库连接


    数据库连接的建立及关闭极耗系统资源的操作,在多层结果的应用环境中,这种资源的耗费对系统性能影响尤为明显。

    通过DriverManager获得的数据库连接,一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接。频繁的打开、关闭连接将造成系统性能低下。

    数据库连接池的解决方案是:当应用程序启动时,系统主动建立足够的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无需重新打开连接,而是从池中取出已有的连接使用,使用完后,不再关闭数据库连接,而是直接将连接归还给连接池。通过使用连接池,经大大提供程序运行效率。

    DBCP数据源是Apache软件基金组织下的开源连接池实现。Tomcat的连接池正是采用该连接池来实现的。数据库连接池可以与应用服务器整合使用,也可由应用程序独立使用。

    package com.sun.demo;
    
    import java.sql.Connection;
    
    import org.apache.commons.dbcp.BasicDataSource;
    
    public class Test04 {
    
    	/**
    	 * 此程序使用DBCP数据源取得数据库连接。
    	 * 
    	 *             主流数据库连接池之一(DBCP、c3p0、proxool),单独使用DBCP需要使用commons-dbpc.jar、
    	 *             commons-collections.jar、commons-pool.jar三个包
    	 *             commons-dbpc.jar:连接池的实现 
    	 *             commons-pool.jar:连接池实现的依赖库
    	 */
    	public static void main(String[] args) throws Exception {
    		// 创建数据源对象
    		BasicDataSource ds = new BasicDataSource();
    		// 设置连接池所需的驱动
    		ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    		// 设置连接数据库的url
    		ds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:jssbook");
    		// 设置连接数据库的用户名
    		ds.setUsername("scott");
    		// 设置数据库的密码
    		ds.setPassword("tiger");
    		// 设置连接池的初始连接数
    		ds.setInitialSize(5);
    		// 设置连接池最多可有有多少个活动连接数
    		ds.setMaxActive(20);
    		// 设置连接池中最少有2个空闲的连接
    		ds.setMinIdle(2);
    		// 通过数据源获取连接
    		Connection con = ds.getConnection();
    		con.close();
    	}
    
    }
    

     数据源和数据库连接不同,数据源无须创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个数据源即可。建议吧上面的程序中ds设置成static成员变量,并且在应用开始时立即初始化数据源对象,程序中所有需要获取数据库连接的地方直接访问该ds对象,并获取数据库连接即可,当数据库访问结束后,程序还是像以前一样关闭数据库连接。

  • 相关阅读:
    BZOJ 4815: [Cqoi2017]小Q的表格
    BZOJ 3676: [Apio2014]回文串
    BZOJ 4503: 两个串
    BZOJ 2618: [Cqoi2006]凸多边形
    BZOJ 1137: [POI2009]Wsp 岛屿
    BZOJ 4824: [Cqoi2017]老C的键盘
    BZOJ 3167: [Heoi2013]Sao
    BZOJ 4033: [HAOI2015]树上染色
    1003. 我要通过!(20)
    1002. 写出这个数 (20)
  • 原文地址:https://www.cnblogs.com/yc12/p/4119759.html
Copyright © 2020-2023  润新知