欢迎来到天天文库
浏览记录
ID:10916275
大小:32.67 KB
页数:27页
时间:2018-07-08
《什么是数据库连接池》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、数据库连接池1.什么是连接池传统的开发模式下,Servlet处理用户的请求,找Dao查询数据,dao会创建与数据库之间的连接,完成数据查询后会关闭数据库的链接。这样的方式会导致用户每次请求都要向数据库建立链接而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、宕机。 解决方案就是数据库连接池连接池就是数据库连接对象的一个缓冲池我们可以先创建10个数据库连接缓存在连接池中,当用户有请求过来的时候,dao不
2、必创建数据库连接,而是从数据库连接池中获取一个,用完了也不必关闭连接,而是将连接换回池子当中,继续缓存 使用数据库连接池可以极大地提高系统的性能 2.实现数据库连接池jdbc统一了数据库的操作 定义了规范jdbc针对数据库连接池也定义的接口java.sql.DataSource,所有的数据库连接池实现都要实现该接口该接口中定义了两个重载的方法ConnectiongetConnection()ConnectiongetConnection(String username,String password) 数据库连接池实现思路1)定义一
3、个类实现java.sql.DataSource接口2)定义一个集合用于保存Connection对象,由于频繁地增删操作,用LinkedList比较好3)实现getConnection方法,在方法中取出LinkedList集合中的一个连接对象返回注意: 返回的Connection对象不是从集合中获得,而是删除 用户用完Connection,会调用close方法释放资源,此时要保证连接换回连接池,而不是关闭连接 重写close方法是难点,解决方案:装饰设计模式、动态代理 二、数据源通常我们把DataSource的实现,按其英文含义
4、称之为数据源,数据源中都包含了数据库连接池的实现。 一些开源组织提供了数据源的独立实现,常用的有:DBCP数据库连接池C3P0数据库连接池1. DBCP数据源介绍DBCP是Apache软件基金组织下的开源连接池实现tomcat服务器就是使用DBCP作为数据库连接池使用DBCP数据源,需要导入两个jar包Commons-dbcp.jar:连接池的实现Commons-pool.jar:连接池实现的依赖库 DBCP核心APIBasicDataSource数据源实现BasicDataSourceFactory用于创建数据源的工厂类 dbcp
5、创建连接池方法1: 直接创建对象,设置参数BasicDataSourcebds=newBasicDataSource(); //设置连接数据库需要的配置信息bds.setDriverClassName("com.mysql.jdbc.Driver");bds.setUrl("jdbc:mysql://localhost:3306/jdbc3");bds.setUsername("root");bds.setPassword("root"); //设置连接池的参数bds.setInitialSize(5);bds.setMaxActi
6、ve(10); ds=bds 方法2:通过工厂类创建对象,读取配置文件try{ Propertiesprop=newProperties(); //读配置文件 InputStreamin= JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); prop.load(in); ds=BasicDataSourceFactory.createDataSource(prop);}catch(Exceptione){ thro
7、wnewExceptionInInitializerError(e);} 配置文件为dbcpconfig.properties#连接设置driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/jdbc3username=rootpassword=root #initialSize=5 #最大连接数量maxActive=10 #maxIdle=10 #maxWait=60000 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]#注意:"user"与"password"两个属性会被明确地传递,因此这里不需要包含他们。con
此文档下载收益归作者所有