关于数据库连接池的学习

数据库连接池是Connection对象的工厂:

因为在创建数据库连接时都会打开一个物理连接,当使用完之后在关闭,会降低性能。所以就会使用到数据库连接池,在数据库连接池中我们会创建一定的连接数,当我们

要连接数据库的时候就从池子里取出以有的连接,用完之后在放回到池子中。如果当池子中的连接都被用到了。就会进行等待,如果超出了等待时间就会报异常。

对于数据库连接池。我们可以使用Apache 的BasicDataSource ,这个类主要实现了DataSource 接口。 对于使用这个类我们要放入:commons.pool.jar,commons.dbcp.jar,commons.collections.jar。

 1 package com.devil.util;
 2
 3 import java.sql.Connection;
 4 import java.sql.SQLException;
 5
 6 import org.apache.commons.dbcp.BasicDataSource;
 7
 8 public class DataBasePool {
 9
10     private static final DataBasePool instance = new DataBasePool();
11     BasicDataSource ds = new BasicDataSource();
12     private DataBasePool(){
13         ds.setPassword(XMLDateParse.getPassword());
14         ds.setUrl(XMLDateParse.getUrl());
15         ds.setUsername(XMLDateParse.getUsername());
16         ds.setDriverClassName(XMLDateParse.getDriver());
17
18         //set the max data connection pool connection active count
19         ds.setMaxActive(10);
20         //set the initial connection size
21         ds.setInitialSize(2);
22         //set the min idle size
23         ds.setMinIdle(2);
24         //set the max wait mins
25         ds.setMaxWait(2000);
26
27     }
28     public Connection getConnection(){
29
30         Connection conn = null;
31         try {
32             conn = ds.getConnection();
33         } catch (SQLException e) {
34             e.printStackTrace();
35         }
36
37         return conn;
38     }
39
40     public static DataBasePool getInstance() {
41         return instance;
42     }
43
44     public void close(){
45             try {
46                 if(ds != null){
47                     ds.close();
48                 }
49             } catch (SQLException e) {
50             }
51     }
52 }
时间: 2024-10-03 22:37:23

关于数据库连接池的学习的相关文章

数据库连接池C3P0学习

数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. 一.实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: driverClass=xxx jdbcUrl=xxx user=xxx password=xxx ... 然后代码中实现 Properties props = new Properties(); InputStream i

[原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

【Java EE 学习第16天】【dbcp数据库连接池】【c3p0数据库连接池】

零.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: 1 package day16.utils; 2 3 import java.io.IOException; 4 import java.lang.reflect.InvocationHandler; 5 import java.lang.reflect.Method; 6 import java.lang.reflect.Proxy; 7 import java.sql.Connection; 8 import java.sql.D

javaweb学习总结(三十九)——数据库连接池

一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.如下图所示: 二.使用数据库连接池优化程序性能 2.1.数据库连接池的基本概念 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性

Java -- JDBC 学习--数据库连接池

JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05s-1s的时间).需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接.这样的方式将会消耗大量的资源和

【转】JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)

转自:http://www.cnblogs.com/ysw-go/ JDBC数据库连接池的必要性 一.在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤: 1)在主程序(如servlet/beans)中建立数据库连接 2)进行sql操作 3)断开数据库连接 二.这种模式开发,存在的问题: 1)普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载进内存中,再验证用户名和密码(得花费0.05s~1s的时间).需要数据库连接

【Java EE 学习第15天】【自定义数据库连接池之动态代理的使用】

一.动态代理的作用 使用动态代理可以拦截一个对象某个方法的执行,并执行自定义的方法,其本质是反射 优点:灵活 缺点:由于其本质是反射,所以执行速度相对要慢一些 二.数据库连接池设计思想 1.为什么要使用数据库连接池:创建Connection对象的过程是非常耗时的,为了保证Connection可以重用,应该对Connection进行管理. 2.设计要求: (1)连接池能够实现维护多个连接,必须要保证每一个线程获取到的是不同的Connection对象. (2)提供一个方法能够回收连接. 3.最基本的

JDBC基础学习(六)—数据库连接池

一.数据库连接池介绍 1.数据库连接池的缘由      对于一个简单的数据库应用,由于对于数据库的访问不是很频繁.这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销.但是对于一个复杂的数据库应用,情况就完全不同了.频繁的建立.关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈.      连接复用.通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭

day13_Mysql事物与数据库连接池学习笔记

一.Mysql事务 事务: 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功(数据回滚). 例如:A给B转帐,对应于如下两条sql语句 : update account set money=money-100 where name='a'; update account set money=money+100 where name='b'; 1.Mysql中的事务 a.mysql引擎是支持事务的. b.mysql语句默认是自动提交事务.每条语句都处在单独的事务中. c