热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据源和连接池

数据源是用来连接数据库,获得Connection对象的,在java中使用javax.sql.DataSource接口来表示。有了数据源,我们就不需要在编写其他连接数据库代码,直接从数据源中获取连接就可以了,而且,不管使用什么样的数据库,都是用一样的方式获取数据库连接对象。数据源对象一般由容器创建的,在程序中可以使用JN

数据源是用来连接数据库,获得Connection对象的,在java中使用javax.sql.DataSource接口来表示。

有了数据源,我们就不需要在编写其他连接数据库代码,直接从数据源中获取连接就可以了,而且,不管使用什么样的数据库,都是用一样的方式获取数据库连接对象。

数据源对象一般由容器创建的,在程序中可以使用JNDI来获取。通过数据源创建的连接对象可以被自动的放入连接池统一管理。

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

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

在Tomcat中使用数据源可以使用如下步骤:

1、在Tomcat中加入数据库驱动文件,在Tomcat的lib目录下导入数据库驱动包。

2、配置Tomcat的conf/context.xml文件,在该文件中加入如下代码:


	

name:指定Resource的JNDI名称。auth:指定管理Resource的Manager(Container:由容器创建和管理,Application:由WEB应用创建和管理)。type:指定Resource所属的java类。maxActive指定连接池中处于活动状态的数据库连接的最大数目。maxIdle:指定连接池中处于空闲状态的数据库连接的最大数目。maxWait:指定连接池中处于空闲的最长时间,超过这个时间会抛出异常,取值为-1表示无限期等待。

3、使用JNDI获取连接对象。

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class JNDIConnection {
	public Connection JNDIgetConnection() {
		Connection cOnn= null;
		Context ic;
		try {
			ic = new InitialContext();
			DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/books");
			cOnn= ds.getConnection();
		} catch (NamingException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
}

这时我们就可以使用连接对象,并且对数据库进行一系列操作。


推荐阅读
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • Spring Boot 初学者指南(第一部分)
    本文介绍了Spring Boot框架的基础知识,包括其设计理念、主要优势以及如何简化传统的J2EE开发流程。 ... [详细]
  • 帝国cms各数据表有什么用
    CMS教程|帝国CMS帝国cmsCMS教程-帝国CMS精易编程助手源码,ubuntu桥接设置,500错误是tomcat吗,爬虫c原理,php会话包括什么,营销seo关键词优化一般多 ... [详细]
  • SpringBoot底层注解用法及原理
    2.1、组件添加1、Configuration基本使用Full模式与Lite模式示例最佳实战配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 本文介绍了Tomcat的基本操作,包括启动、关闭及首次访问的方法,并详细讲解了如何在IDEA中创建Web项目,配置Servlet及其映射,以及如何将项目部署到Tomcat。 ... [详细]
  • 解决JavaWeb项目中因IPv6导致的IP转换错误
    本文探讨了在JavaWeb项目中,当尝试将客户端IP地址从字符串形式转换为整数时遇到的问题,并提供了详细的解决方案。具体问题表现为在本地环境中通过`request.getRemoteHost()`获取到的IP地址为IPv6格式,而非预期的IPv4格式。 ... [详细]
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
author-avatar
0o墨滴成殇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有