Java中数据库连接池简单介绍

本文介绍了数据库连接池的概念,以及如何自定义数据库连接池。重点讲解了两种常用的连接池实现:DBCP和c3p0的配置与使用方法。此外,还探讨了在Tomcat服务器中管理连接池的步骤,特别是利用JNDI获取数据源。
摘要由CSDN通过智能技术生成

提纲:
1.数据库连接池介绍以及如何自定义数据库连接池
2.介绍两种连接库连接池DBCP,c3p0(文后附jar包)
3.tomcat管理连接池.

##DataSource(数据源/数据库连接池 )简单介绍

连接池:创建多个Connection对象,放入到连接池(其实就是一个容器)中
当使用时,从连接池中取出一个连接对象,使用完成后,再将这个对象
放回到池中.
编写连接池需要实现javax.sql.DataSource接口

自定义连接池步骤
1.创建类实现 DataSource接口
2.重写getConnection方法
3.创建一个LinkedList集合
4.在构造方法中向集合中添加多个Connection对象
5.在getConnection方法中,从集合中获取Connection对象返回(removeFirst())
6.定义一个closeCon方法,用于回收使用后的Connection对象
下面来演示一下自定义连接池:

package cn.lawfree.datasource;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.LinkedList;
import java.util.logging.Logger;

import javax.sql.DataSource;

import cn.itcast.JDBC.util.JdbcUtil;

public class MyDataSource implements DataSource {
	// 定义一个容器用来装入Connection.
	private LinkedList<Connection> conns = new LinkedList<Connection>();

	// 定义构造方法
	public MyDataSource() {
		for (int i = 0; i < 10; i++) {
			conns.add(JdbcUtil.getConnection());
		}
	}

	@Override
	public Connection getConnection() throws SQLException {
		// 若连接池中没有连接对象,重新创建三个
		if (conns.size() == 0) {
			for (int i = 0; i < 3; i++) {
				return conns.removeFirst();
			}
		}

		return conns.removeFirst();
	}

	// 用来回收连接对象
	public void closeConnection(Connection conn) {
		conns.add(conn);
	}

	@Override
	public Connection getConnection(String arg0, String arg1)
			throws SQLException {
		return null;
...

**问题:*为了不依赖于自定义的API,而是可以直接使用java.sql. ,java.sql.*中的API
怎样解决 con.close()时不是销毁con对象,而是将对象重新放到连接池中
**分析:**原本close方法是销毁Connection对象,现在要将这个方法的功能进行改变(增强)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值