数据库连接池介绍

更新时间:2024-07-10 18:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

—高级软件人才实作培训专家!

数据库连接池

池参数(所有池参数都有默认值): 初始大小:10个

最小空闲连接数:3个

增量:一次创建的最小单位(5个)

最大空闲连接数:12个(超出这个值之后销毁到12个) 最大连接数:20个

最大的等待时间:1000毫秒(抛异常:结束方法的调用)

四大连接参数

连接池也是使用四大连接参数来完成创建连接对象!

实现的接口

连接池必须实现:javax.sql.DataSource接口!

连接池返回的Connection对象,它的close()方法与众不同!调用它的close()不是关闭,而是把连接归还给池!

数据库连接池(可重用,因为对象的创建销毁很麻烦)

1 数据库连接池的概念

用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。

北京传智播客教育 www.itcast.cn

—高级软件人才实作培训专家!

2 JDBC数据库连接池接口(DataSource)

Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!

3 自定义连接池(ItcastPool)

分析:ItcastPool需要有一个List,用来保存连接对象。在ItcastPool的构造器中创建5个连接对象放到List中!当用人调用了ItcastPool的getConnection()时,那么就从List拿出一个返回。当List中没有连接可用时,抛出异常。

我们需要对Connection的close()方法进行增强,所以我们需要自定义ItcastConnection类,对Connection进行装饰!即对close()方法进行增强。因为需要在调用close()方法时把连接“归还”给池,所以ItcastConnection类需要拥有池对象的引用,并且池类还要提供“归还”的方法。

ItcastPool.java public class ItcastPool implements DataSource { private static Properties props = new Properties(); private List list = new ArrayList(); static { InputStream in = ItcastPool.class.getClassLoader() .getResourceAsStream(\); try { props.load(in); 北京传智播客教育 www.itcast.cn

—高级软件人才实作培训专家!

} public Connection getConnection() throws SQLException { if(list.size() > 0) { } return list.remove(0); public ItcastPool() throws SQLException { } public void add(Connection con) { } list.add(con); for (int i = 0; i < 5; i++) { } Connection con = DriverManager.getConnection( props.getProperty(\), props.getProperty(\), props.getProperty(\)); } } Class.forName(props.getProperty(\)); throw new RuntimeException(e); } catch (Exception e) { ItcastConnection conWapper = new ItcastConnection(con, this); list.add(conWapper); throw new SQLException(\没连接了\); } ...... ItcastConnection.java public class ItcastConnection extends ConnectionWrapper { } @Override public void close() throws SQLException { } pool.add(this); private ItcastPool pool; public ItcastConnection(Connection con, ItcastPool pool) { } super(con); this.pool = pool; 北京传智播客教育 www.itcast.cn

—高级软件人才实作培训专家!

北京传智播客教育www.itcast.cn

本文来源:https://www.bwwdw.com/article/zc5.html

Top