现在的位置: 首页 > 综合 > 正文

连接池的几种设置方法

2017年12月26日 ⁄ 综合 ⁄ 共 2632字 ⁄ 字号 评论关闭

由于数据库的连接是一个非常耗时的IO操作,所以连接池是为了解决这一问题而出现的。连接池是一种把数据库的连接缓存起来的机制。目的以最多的连接服务最多的请求。


目前主流的连接池有以下两种

apache的DBCP

hibernate的C3P0


apache的DBCP的设置方法


第一种配置.tomcat  里配置资源,通过JDK的JNDI来访问资源连接池

tomcat 配置:在tomcat/conf/context.xml下面配置


<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
	maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/fkbookapp"
	password="root" type="javax.sql.DataSource" url="jdbc:mysql://127.0.0.1:3306/fkbook"
	username="root" />


在java文件中引用:

package com.sharp.util;

import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;


/**
 * @Version: 1
 * @JDK: jdk 1.7
 * @Module: TestJob
 * 2012-6-25 - 上午10:46:37 Created by Sharp
 */

/*- 				History
 **********************************************
 *  ID      DATE           PERSON       REASON
 *  1     2012-6-25         Sharp        Created
 **********************************************
 */

public class ConnectionFactory {
	private static DataSource ds;
	static{
		try{
			Context context = new InitialContext();
			ds = (DataSource)context.lookup("java:comp/env/jdbc/fkbookapp");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static Connection getMysqlConnection(){
		try{
			return ds.getConnection();
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
}


第二种配置

            直接在java文件里配置

/**
 * @Version: 1
 * @JDK: jdk 1.7
 * @Module: mypool

 * 2012-6-25 - 下午9:42:36 Created by Sharp
 */ 

 /*- 				History
 **********************************************
 *  ID      DATE           PERSON       REASON
 *  1     2012-6-25         Sharp        Created
 **********************************************
 */

package com.sharp.connectionfactory;


import java.sql.Connection;

import org.apache.commons.dbcp.BasicDataSource;

public class PoolTest {
	private static BasicDataSource ds;
	static{
		ds = new BasicDataSource();
		ds.setUrl("jdbc:mysql://127.0.0.1:3306/fkbook");
		ds.setUsername("root");
		ds.setPassword("xiaopeng");
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setMaxActive(5);
		ds.setMaxIdle(3);
		ds.setMaxWait(5000);
	}
	public static void main(String[] args) {
		try{
			Connection con1 = ds.getConnection();
			System.out.println("con1----------->" + con1);
			Connection con2 = ds.getConnection();
			System.out.println("con2----------->" + con2);
			Connection con3 = ds.getConnection();
			System.out.println("con3----------->" + con3);
			Connection con4 = ds.getConnection();
			System.out.println("con4----------->" + con4);
			con1.close();
			con2.close();
			con3.close();
			con4.close();
			System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
			
			Connection con5 = ds.getConnection();
			System.out.println("con5----------->" + con5);
			Connection con6 = ds.getConnection();
			System.out.println("con6----------->" + con6);
			Connection con7 = ds.getConnection();
			System.out.println("con7----------->" + con7);
			Connection con8 = ds.getConnection();
			System.out.println("con8----------->" + con8);
			con5.close();
			con6.close();
			con7.close();
			con8.close();
		}catch(Exception e){
			e.printStackTrace();
		}

	}
}

抱歉!评论已关闭.