- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章--数据库连接池及JNDI技术
第五章 数据库连接池及JNDI技术
本节内容
JNDI概述
连接池及JNDI的应用
本讲目标
连接池及JNDI的应用
JNDI介绍
什么是JNDI
JNDI(Java Naming and Directory Interface,Java命名和目录接口)
是一组在Java应用中访问命名和目录服务的API
通过名称将资源与服务进行关联
JNDI的简单应用
应用步骤
修改Tomcat\conf\context.xml文件
使用lookup()进行查找
Context
Environment name=tjndi value=hello JNDI type=java.lang.String /
/Context
//javax.naming.Context提供了查找JNDI 的接口
Context ctx = new InitialContext();
//java:comp/env/为前缀
String testjndi = (String)ctx.lookup(java:comp/env/tjndi);
out.println(JNDI: +testjndi);
初始化Context对象
调用lookup()方法
JNDI查找的名称
生活中的连接池
普通电话 ----建立连接,等待回应
热线电话 ----已建立连接
连接
已连接
开始通话
开始通话
已连接,直接通话
连接中
传统数据库连接方式的不足
每一次请求时均需要与数据库进行连接,资源占用较多
当并发访问数量较大时,网站速度收到极大影响
在访问结束后必须要关闭连接释放资源
系统的安全性和稳定性相对较差
为什么使用连接池
为什么使用连接池
企业级开发需要稳健和高效的数据访问层
完成对数据库的CRUD操作
能够处理数据库发生的各种错误
可以灵活的修改配置
提供方便使用的工具
高性能
数 据 库
请求
响应
操作
结果
要求高效、稳健的数据访问层
打开连接,操作数据库,关闭连接
多次重复操作
传统的JDBC已经无法满足需求,那怎么办呢?
什么是连接池技术
连接池
连接池是在内存中预设好一定数量的连接对象,以备用户在进行数据库操作时直接使用
性能
数据库连接的建立、断开均由管理池统一管理
连接池技术与传统数据库连接的比较
数据库操作性能得到提升
通过连接池管理数据库的连接与释放、提高了系统资源的使用效率
连接池技术工作原理
连接池中的连接
数 据 库
想要获得连接
返回一个连接
返回一个已连接好的空闲连接
应用程序从连接池中获得连接
连接池是由容器提供的,用来管理池中连接对象
应用程序
连接池
数据源简介
数据源(DataSource)
javax.sql.DataSource接口负责建立与数据库的连接
从Tomcat的数据源获得连接
把连接保存在连接池中
应用程序
Connection1
Connection2
Connection3
数 据 库
想要获得连接
返回一个连接
连接池
连接池中的连接对象
是由谁创建的呢?
访问数据源
如何获得DataSource对象
数据源由Tomcat提供,不能在程序中创建实例
使用JNDI获得DataSource引用
应用程序
jdbc/s1
jdbc/s2
数据源
数据源名称
Connection
context.lookup( jdbc/s1 )
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class TitlesBean {
public List getTitles() {
try {
Context ic = new InitialContext();
DataSource source =
(DataSource)ic.lookup(java:comp/env/jdbc/news);
Connection connection = source.getConnection();
titlesQuery = connection.prepareStatement(SELECT * FROM titles );
ResultSet results = titlesQuery.executeQuery();
//为BookBean对象的属性赋值,并添加到titlesList中
文档评论(0)