zoukankan      html  css  js  c++  java
  • 【Java】数据库连接池技术

    JDBC问题

    在程序中,我们经常要建立与数据库的连接,之后再关闭这个连接。我们知道,数据库连接对象的创建是比较消耗系统性能的,这些频繁的操作势必会消耗大量的系统资源。因此我们需要采用更高效的数据库访问技术。

    数据库连接池的概念

    在JDBC2.0中提出了数据库连接池技术,它提供了javax.Sql.DataSource(数据源)接口,它负责建立与数据库的连接。通过客户之间共享一组连接,而不是在它们需要的时候为他们新建立连接,这样就可以改善资源的使用,提高应用程序的响应能力。

    连接池技术的核心思想

    连接池技术的核心思想是:连接复用。通过建立一个数据库连接池以及一套连接使用、分配、治理策略,是的该连接池的连接可以得到高效、安全的复用,避免了数据库连接的频繁建立、关闭的开销。

    基于JDBC的数据库连接池技术

    数据库连接池技术是基于JDBC技术的,对JDBC的原始连接进行了封装,从而提高了开发效率。

    数据源的创建与JNDI资源

    DataSource的创建

    DataSource对象由Web容器提供,因此不能再程序中采用创建一个实例的方式来生成DataSource对象。

    DataSource的获取

    当启动Web容器之后,Web容器创建DataSource对象,之后就通过JNDI技术来获得DataSource对象。

    DataSource创建、获取的基本流程

    由于DataSource对象是有Web容器提供的,但Web程序不会平白无故的创建DataSource,必须通过一个"消息"通知Web容器要创建数据源对象。通常我们用的Web容器时Tomcat,在Tomcat中这个"消息"就是一个XML配置文件,通过context.xml文件配置数据源。

    Tomcat的安装路径下的conf 目录下有一个context.xml文件。当启动Tomcat后,Tomcat会加载一系列的配置文件,并且解析配置文件中的内容,当然也包括context.xml文件。当Tomcat检查到context.xml文件中有数据源对象的配置时,Tomcat就会跟数据源配置信息创建相应的数据库连接。在创建数据源的过程中,Tomcat会根据配置信息,比如说:数据源的名称、数据源的类型、数据源数据连接的最大数目、数据库连接的最大空闲时间等信息创建出相应的连接,形成数据库连接池。

    之后在程序中通过JNDI技术,根据数据源的名称查找到相应的数据库连接池,获取连接,供程序使用。

    JNDI的配置

    TomcatDataSource作为一种可配置的JNDI资源来处理。其配置如下:

    <Context>

    ……

    <Resource name="jdbc/books" auth="Container" type="javax.sql.DataSource" maxActive="1000" maxIdle="30" maxWait="10000" username="sa" password="sa"

    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

    url="jdbc:sqlserver://localhost:1433; DatabaseName=books"

     />

    </Context>

    通过JNDI在程序中获取DataSource

    在程序中,通过javax.naming.Context对象获得DataSource对象,如下:

    Context cxt = new InitialContext();

    Web容器加载到该句代码时,当完成创建实例后,Context对象就获取了DataSource对象

    之后通过Context对象的lookup方法查找出数据源,该方法的参数是以"java:comp/env"为前缀,以配置文件中的数据源的名称结尾的字符串。如下:

    DataSource ds = (DataSource)cxt.lookup("java:comp/env/jdbc/books");

    取得一个数据源之后,将其转换为DataSource对象。

    获得DataSource之后,便通过DataSource对象取得Connection,如下:

    Connection conn = ds.getConnection();

    有了Connection对象之后就可以对数据进行其他操作了。

    http://blog.163.com/qqabc20082006@126/blog/static/22928525201021661922648/

  • 相关阅读:
    Crash dump中需要重点关注的信息
    导致性能问题的常见情况
    关于性能调优
    通过jdt解析spring mvc中url-类-方法的对应关系
    springcloud zuul
    spring中实现自己的初始化逻辑
    nginx配置文件解析工具
    mac 识别压缩文件类型
    使用JDT转java代码为AST
    word中插入的代码库设置局部背景色
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3940690.html
Copyright © 2011-2022 走看看