13.数据库连接池

/*使用数据库连接池优化程序性能*/

一次性从数据库中拿出一定数量的连接,放到一个池子中,每次程序要拿连接的时候,从这个池子里面去拿,用完了,也是放到这个池子里,

避免频繁的从数据库中去存取连接

编写自己的数据库连接池

  1.实现DataSource接口 ,DataSource接口中定义了两个重载的getConnection() 方法

  2.在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中

   实现getConnection()方法,让getConnection()方法每次调用时,从LinkedList中取一个connection (remove方法) 返回给用户

  3.当用户使用完connection,调用connection.close() 方法时,connection对象应保证自己返回到LinkedList中,而不要把connection 还给数据库

  针对 “返回到LinkedList中,而不要把connection 还给数据库” 这种需要增强某个方法,有三种方式实现

    1.编写一个子类(继承Connection) 覆盖close方法 (这里不可以,因为父类的其他信息,子类并不拥有)

    2.写一个Connection包装类,增强close方法 (包装设计模式)

    3.用动态代理,返回一个代理对象出去,拦截close方法的调用,对close方法进行增强

    (不是clsoe方法,都调用invoke方法(让其调用connection自身的方法),是close方法的话,手动增强)

/*用包装设计模式对某个对象进行增强*/

  1.写一个类,实现与被增强对象(mysql的connection)接口

  2.定义一个变量,指向被增强对象

  3.定义一个构造方法,接收被增强对象

  4.覆盖想增强的方法

  5.对于不想增强的方法,直接调用被增强对象的方法

/*加入dbcp链接池*/

  1.导入jar包

  2.在类目录下加入dbcp的配置文件

  3.在jdbcUtils静态代码块中创建池

/*C3P0数据库连接池*/

  1.导入jar包

  2.新建c3p0Test.java单元测试类

  3.打开c3p0的doc帮助文档

  4.选择QuickStart快速开始

  5.拷贝里边的实例代码

  6.修改各个参数

采用配置文件配置数据源

  1.打开帮助文档

  2.找到XML文件示例

  3.在工程中新建c3p0-config.xml文件

  4.拷贝XML示例文件,修改参数 ( <property></property> )

  private static ComboPooledDataSource ds = null;
  static {

    try {

      ds = new ComboPooledDataSource("...");(如果括号为空,没有指定的话,则采用默认)

    }

  }

/*配置Tomcat数据源(实际上是DBCP)*/

  1.在Tomcat中加入数据库驱动软件(放在web工程中的lib 中没有用,需要放在Tomcat的lib目录下)

  2.配置context(可以在很多地方,可以修改tomcat的service.xml文件,也可以在web工程中)

  META-INF目录下,新建一个XML文件,拷贝Tomcat帮助文档中的示例代码

  3.使用JNDI获取连接对象

  Context initCtx = new InitialContext(); //初始化JNDI

  Context envCtx = (Context) initCtx.lookup("java:comp/env"); //得到JNDI容器

  DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB"); //从容器中检索连接池

  Connection conn = ds.getConnection();

时间: 2024-11-20 20:52:21

13.数据库连接池的相关文章

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

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

Java 数据库连接池—转载孤傲苍狼 http://www.cnblogs.com/xdp-gacl/p/4002804.html

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

第13章—数据库连接池(Druid)

spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxiaohang/springboot Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容数据库,包括了Oracle.MySQL.PostgreSQL.SQL Server.H2等. Druid在监控.可扩展性.稳定性和性能方面具有明显的优势.通过Druid提供

JDBC数据库连接池技术

在JDBC中,获得连接或释放资源是非常消耗系统资源的两个过程,为了解决此类性能问题,通常采用连接池技术,来共享连接.这样我们就不需要每次都创建连接.释放连接了,这些操作都交给了连接池. 用池的概念来管理Connection,这样可以重复使用Connection.有了连接池以后就不用自己亲自创建连接而是通过连接池来获得Connection对象.当使用完Connection之后,调用Connection的close()方法不是真的将连接关闭,而是把Connection归还给连接池.连接池就可以继续保

DBCP数据库连接池的简单使用

0.DBCP简介      DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目.DBCP通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的. 1.DBCP所依赖的jar包(以下例子基于如下jar包版本)    commons-dbcp2-2.1.1.jar       commons-logging-

MySql数据库连接池

1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的桥梁,即无发送到SQL命令到数据库端执行  (3).项目中,对于Connection不说,不会直接使用DriverManager取得,而使用连接池方式. 2.采用连接池(示意图) 3.开源数据库连接池 (1).现在很多Web服务器(Weblogic, WebSphere, Tomcat)都提供了Da

数据库连接池proxool的两种使用方式

数据库连接池可以通过两种方式来应用,针对web应用和非web应用而来. 非web应用的数据库连接池配置 第一种方式:工厂类 非web应用可以使用工厂模式将数据库连接创建封装在一个工具类中,工具类中又使用单例模式来创建加载驱动,代码如下: 工厂类:ConnectPoolFactory.java 1 import java.io.InputStream; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import j

[数据库连接池] Java数据库连接池--DBCP浅析.

前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提

开源数据库连接池之C3P0

本篇介绍几种开源数据库连接池,同时重点讲述如何使用C3P0数据库连接池. 之前的博客已经重点讲述了使用数据库连接池的好处,即是将多次创建连接转变为一次创建而使用长连接模式.这样能减少数据库创建连接的消耗.正是由于数据库连接池的思想非常重要,所以市面上也有很多开源的数据库连接池供我们使用.主要有以下三个: DBCP数据库连接池 C3P0 数据库连接池 Tomcat内置的数据库连接池(DBCP) 本篇主要讲述C3P0数据库连接池的使用,关于另外两个数据库连接池的用法请看<开源数据库连接池之DBCP>