一、为什么使用数据源和连接池

现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的。如果每次操作都连接数据库,然后关闭,这样做性能一定会受限。所以,我们一定要想办法复用
数据库的连接。因此针对这种情况,提出了数据源和连接池的概念。使用数据源和连接池可以达到复用数据库连接的目的。

二、数据源和连接池概念

其实,数据源和连接池是两个不同的概念。有些人会把它们弄混。
数据源是用来连接数据库,获得Connection 对象的,在Java 中使用javax.sql.DataSource接口来表示。有了数据源,我们就不需要再编写其他连接数据的代码,直接从数据源获得连接就可以了。而且,不管使用什么样的数据库,都使用一样的方式获得数据库连接对象。那么数据源的对象是如何获得的呢?一般是由容器来创建的,我们在程序中使用JNDI 来获取。通过数据源创建的连接对象可以被自动放入连接池中统一管理

连接池是用来管理Connection 对象的,连接池可以从数据源中获得连接,连接池中可以有若干个数据库连接对象,这些连接对象可以被重用。应用程序需要连接时,就向连接池申请,如果连接池中有空闲的连接,就会分配给应用程序,如果没有,可能就需要在等待队列里等待。而如果从连接池中获得了一个连接对象,等到使用完毕之后,通过调用Connection 的close()方法,就可以将连接还给连接池,这样这个连接对象就又编程空闲的了,可以等待下一次请求。而连接池中的连接对象将一直保持与数据库的连接,这样,就避免了频繁的连接和关闭。但是,这些连接对象会占用一定的内存空间。所以,我们要根据数据库的并发访问量,和服务器的硬件条件来决定连接池中的最大连接数。

三、数据源和连接池,一个是用来创建连接对象的,一个是用来管理连接对象的

四、在Tomcat 中配置数据源

4.1在Tomcat 中使用数据源的步骤如下:

  • (1)在Tomcat 中加入数据库驱动文件
  • (2)配置Tomcat 的conf/context.xml
<Context>
<Resource name="jdbc/books"
auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="pbdevj" password="pwd1234"
driverClassName="oracle.jdbc.OracleDriver "
url="jdbc:oracle:thin:@localhost:1521:orcl "/>
</Context>
属性名称 说明
name 指定Resource 的JNDI 名称
auth

指定管理Resource 的Manager(Container:由容器创建
和管理|Application:由Web 应用创建和管理)

type 指定Resource 所属的Java 类
maxActive 指定连接池中处于活动状态的数据库连接的最大数目
maxIdle 指定连接池中处于空闲状态的数据库连接的最大数目
maxWait

指定连接池中的连接处于空闲的最长时间,超过这个时
间会抛出异常,取值为-1,表示可以无限期等待

  • (3)配置应用程序的web.xml 文件(可选)(注:新版本的Tomcat 不需要如下配置)

  • (4)使用JNDI 获取连接对象
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
//…
Context ic = new InitialContext();
DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/books");
Connection connection = source.getConnection();

JDBC五数据源和数据池(web基础学习笔记十一)的更多相关文章

  1. JSP实现数据保存(web基础学习笔记四)

    session对象: //服务端设置Session属性 session.setAttribute("user", username); //客户端接收Session Object ...

  2. JSP实现数据传递(web基础学习笔记三)

    get和post的区别: JSP内置对象: 1)out内置对象:out内置对象是在JSP开发过程中使用得最为频繁的对象,然而其使用起来也是最简单的.out对象用于向客户端浏览器输出数         ...

  3. JDBC二查询(web基础学习笔记八)

    一.建立数据库 --创建news表空间 CREATE TABLESPACE tbs_news DATAFILE 'F:\ORACLE\news.dbf' SIZE 10M AUTOEXTEND ON; ...

  4. JDBC一(web基础学习笔记七)

    一.JDBC Java数据库的连接技术(Java DataBase Connectivity),能实现Java程序以各种数据库的访问 由一组使用Java语言编写的类和接口(JDBC API)组成,它j ...

  5. JDBC四(web基础学习笔记十)

    一.增加 .修改.删除.查询 将功能整合在一个类中 package pb.base; import java.sql.Connection; import java.sql.DriverManager ...

  6. JDBC三(web基础学习笔记九)

    一.JDBC编程步骤 二.将数据库的信息放入资源文件 // (1)使用Class.forName来导入drive Class.forName("oracle.jdbc.driver.Orac ...

  7. JSP的范围-作用域(web基础学习笔记五)

    JSP的范围(作用域) 在JSP页面中的对象,包括用户创建的对象如JavaBean,都有一个范围属性,这个范围也被叫做“作用域”.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,s ...

  8. 页面可视化编辑ckeditor(web基础学习笔记十五)

    一.CKedit下载ckedit 下载地址:http://ckeditor.com/ 二.ckedit的引入 2.1.解压并将ckedit复制到项目中 2.2.在页面中引入 在页面头部加入 <s ...

  9. Servlet一(web基础学习笔记二十)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

随机推荐

  1. Codeforces Round #288 (Div. 2) B. Anton and currency you all know 贪心

    B. Anton and currency you all know time limit per test 0.5 seconds memory limit per test 256 megabyt ...

  2. UIAutomator2.0初始

    1. 先直接上样例,谷歌官方Demo: https://github.com/googlesamples/android-testing 2. 一句话说明改动思路 Most importantly, ...

  3. Git_搭建Git服务器

    在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改. GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想 ...

  4. GoodSync 同步 对比 备份

    单向/双向皆可,针对任何一侧的文件进行处理,两侧文件都进行更新 文件同步 的操作过程是:确保两处或多处包含完全一致.及时更新 的各种文件.当对某一处进行文件添加.更改或删除,则同步操作将对对应的 另一 ...

  5. Win7 开启显示快速启动工具栏,发送到快速启动右键菜单

    开启Win7快速启动栏 许多网友一定记得在 Windows 7 之前的 Windows 系统都有个快速启动(quick launch)区域. 比如 IE 浏览器.Windows Media Playe ...

  6. 主动找智能钥匙 PKE取代RKE是大势所趋

    http://taobao.autos.cn.yahoo.com/ypen/20111128/725214.html 近日,在车友论坛上的一个热帖<悲喜交加:1分钟就能复制汽车遥控器?>在 ...

  7. 【《Objective-C基础教程 》笔记ch03】(四)OC中的OOP

    一.声明类接口步骤: 1.声明一个类接口,使用@interfacekeyword加上类名称. 2.用  { 实例变量 }  来定义各种数据成员. 3.方法声明,採用中缀符语法声明一个c函数,用到了冒号 ...

  8. ASP.NET WEB API 调试

    ASP.NET WEB API 中的路由调试与执行过程跟踪 http://www.cnblogs.com/Irving/p/4305493.html 路由调试 RouteDebugger 是调试 AS ...

  9. Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】

    測试步骤 [測试版本号]T0606 [模块版本号] NAVI锁屏:5.0.0.ck [測试步骤] 1.手动按power键上锁, [測试结果] 没有锁屏提示音,无法恢复[单机必现] [预期结果] 有提示 ...

  10. .NET:CLR via C# A Brief Look at Metadata

    基础知识 A managed PE file has four main parts: the PE32(+) header, the CLR header, the metadata, and th ...