JavaWeb学习-数据库连接池-1-连接池概述

本文深入探讨数据库连接池的概念,分析其在提升数据库操作性能方面的重要作用。通过对比使用与未使用连接池的情况,阐述连接池如何有效管理数据库连接,避免资源浪费,并提供一个简单的连接池实现示例。

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

开始下一个知识点学习,数据库连接池。前面我们虽然使用了DBUtils.java这个工具类,处理没一个DAO中方法都是需要new connecttion对象,用完了然后关闭释放资源。有了连接池之后,可以大大提高数据库操作的性能。

1.什么是连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:
释放空闲时间超过最大空闲时间的数据库连接,来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项数据能明显提高对数据库操作的性能。

 

2.没有连接池的缺点

之前我们每次处理一个请求,都是调用DAO层下具体方法,每一个方法都是新建数据库连接,然后处理业务,然后关闭连接,整个过程就像下面这张图描述的样子。

得到

3.用了连接池的效果

为了解决2中的问题,采用数据库连接池的技术。

上面DAO到DB之间,我们提前创建了一个连接池,假如说10个,第一个用户对应的连接处理完了,不会立马关闭,而是放回到连接池中,让后面等待的数据库访问对象去接着使用创建好的连接对象。这样大大节约了连接对象的创立时间和对象关闭时间的消耗,提升了数据库的访问连接性能。

总结:连接池的作用

解决建立数据库连接耗费资源和时间很多的问题,提高数据库服务器

 

4.模拟创建一个连接池

下面我们利用前面UBUtils.java基础上模拟一个连接池。

package com.anthony.pool;

import java.sql.Connection;
import java.util.Collections;
import java.util.LinkedList;

import javax.management.RuntimeErrorException;

import com.anthony.utils.DBUtils;

//模拟数据库连接池,但不具备实际开发意义
public class SimplePool {
	
	//创建一个存放连接的池子,大小为10
	private static LinkedList<Connection> pool = (LinkedList<Connection>) Collections.synchronizedCollection(new LinkedList());
	
	static {
		try {
			for (int i = 0; i < 10; i++) {
				Connection conn = DBUtils.getConnection();
				pool.add(conn);
			}
		} catch (Exception e) {
			throw new ExceptionInInitializerError("初始化数据库连接失败,请检查配置文件。");
		}
	}
	
	//得到一个连接
	public Connection getConnectionFromPool() {
		Connection conn = null;
		if(pool.size() > 0) {
			conn = pool.removeFirst();
			return conn;
		}else {
			// 1 等待
			// 2.等待超时,新创建一个连接
			throw new RuntimeException("服务器忙");
		}
	}
	
	//释放一个连接
	public void releaseConnection(Connection conn) {
		pool.addLast(conn);
	}
	
}

上面代码只是模拟,没有实际开发意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值