当前位置:   article > 正文

DBCP连接池简易实现(Oracle)_dpcp2 连接池 连接oracle jdbc driver

dpcp2 连接池 连接oracle jdbc driver

闲来无事,就看了看连接池,在这里主要讲一下DBCP连接池中的properties配置文件和简单的实现(Oracle数据库)
准备工作:
主要三个jar包:
commons-dbcp2-2.6.0.jar、commons-pool2-2.4.2.jar、commons-logging-1.1.1.jar
之后是properties配置文件
1、Oracle连接的配置文件

driverName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl 
username=scott
password=a 
//设置是否默认自动提交 默认为true
defaultAutoCommit=true 
//是否为只读 默认为false
defaultReadOnly=false 
//初始化数据池拥有的连接数量
initialSize=10
//池中最多可容纳的可以使用的连接数量
maxActive=20
//最大空闲等待
maxIdle=20
//最小空闲等待
minIdle=5
//最大等待时间
maxWait=20000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2、mysql连接的配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/restaurant
username=root
password=a
defaultAutoCommit=true
defaultReadOnly=false
initialSize=30
maxActive=10
maxIdle=10
minIdle=5
maxWait=100
removeAbandonedOnMaintenance=true
removeAbandonedOnBorrow=true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

数据库的配置其实都是相同的。
接下来是具体的实现类
DbcpConnection.java

public class DbcpConnection {
	public static DataSource ds = null;
	private static PreparedStatement pstmt=null;
	private static ResultSet rs=null;
	static {
		// 初始化DS就可以提供连接,使用DBCP将初始化
		Properties p = new Properties();// 使用这个工具类来读取文件的数据;
		try {
			p.load(DbcpConnection.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));
			ds = BasicDataSourceFactory.createDataSource(p);

			((BasicDataSource) ds).setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new ExceptionInInitializerError("初始化错误,请检查配置文件");
		}

	}

	public static Connection getConn() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException("服务器忙");
		}

	}
  //注意:这里的close关闭是DBCP已经代理过的close()方法并不是原生的close()方法。
	public static void release(ResultSet rs, PreparedStatement pstmt, Connection conn) {
		if (null != rs) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		if (null != pstmt) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}


}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

下面是测试类

public class DbcpTest {
	DbHelper db=new DbHelper();	
	Connection conn=null;
	@Test //100个 9051
	public void  DbcpTest01() throws Exception{

		long a=System.currentTimeMillis();
		//for循环测试效率
		for(int i=1;i<1000;i++){
			System.out.println(i);
			conn=DbcpConnection.getConn();
			//close()方法
			conn.close();
		}
		long b=System.currentTimeMillis();
		System.err.println(b-a);
		
		
	}  
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/443184
推荐阅读
相关标签
  

闽ICP备14008679号