Java数据库连接池(一)
JDBC:Java Data Base Connectivity,java数据库连接,提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的行业标准。此 API 包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源。
JDBC API使得它可以做三件事:
l 与数据库或任何格式化数据源建立连接
l 发送SQL语句
l 处理响应
JDBC API优势:
在1997年1月推出以来,JDBC API已成为被广泛接受和实施。 JDBC API的灵活性,囊括了广泛的数据库厂商的实现。代表由其属性决定的数据源对象,当调用getConnection时将返回应用一个java.sql.Connection的实例,当然java.sql.Connection是接口,其实返回的是其实现类的实例。
l 促进进步伙伴,Sun公司在同行业中创造和迅速建立行业标准的,为Java访问数据库的应用程序开放了JDBC API的接口。
l 促进行业发展,领先的数据库,中间件和工具供应商已开发许多支持JDBC技术的新产品。使得客户能够建立可移植的Java应用程序,而从为更有竞争力的产品提供了广泛的选择。
l 利用现有的企业数据,利用JDBC技术,在不同的数据库管理系统中,企业不需要有特殊的设计,可以继续使用他们安装的数据库。
l 简化企业应用开发,使用Java API和JDBC API开发java应用更加简单容易,JDBC API隐藏许多底层的、繁琐的细节问题,从而带来的是低廉的学习成本、易于部署、维护。
l 零配置,有了JDBC API,不需要任何的配置或者是安装,紧紧是依赖于数据库Url或是JNDI注册一个DataSource对象。
实际上,JDBC就是将各个数据库之间的差异透明化,对于应用来说,无需关注操作数据库繁琐的细节问题,也不用去维护数据库连接,操作底层通信协议,只需要根据JDBC API统一的数据库访问API来编写代码,并且做到一次编写到处运行的效果。
而数据库厂商不需要关注众多、繁杂、形式各异的应用如何访问数据库,只需要依据JDBC API来提供相应的数据库访问驱动。对于厂商来讲应用的透明的。
通过以上描述,应用指导JDBC API相当于应用和数据库之间沟通和相互协作的桥梁,JDBC API制定了一些规范,用于统一他们之间的交互行为,使得两者之间相互透明化。
DriverManager:管理一组 JDBC 驱动程序的基本服务。作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户定制由他们的应用程序使用的 JDBC Driver。例如,在 ~/.hotjava/properties 文件中,用户可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
DriverManager 类的方法 getConnection 和 getDrivers 已经得到提高以支持 Java Standard Edition Service Provider 机制。 JDBC 4.0 Drivers 必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。例如,要加载 my.sql.Driver 类,META-INF/services/java.sql.Driver 文件需要包含下面的条目:
my.sql.Driver
应用程序不再需要使用 Class.forName() 显式地加载 JDBC 驱动程序。当前使用 Class.forName() 加载 JDBC 驱动程序的现有程序将在不作修改的情况下继续工作。
在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
DataSource:DataSource
接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法(相对于DriverManager)。使用 DataSource
对象是连接到数据源的首选方法。DataSource隔离了应用和数据源,使得数据源对于应用程序来说是透明的。一个DataSource
从JDBC4.0开始有两个比较重要的特性:
l ConnectionPoolDataSource:支持Connection连接的缓存和重用,从而提高应用程序的性能和可扩展性。
l XADataSource :支持分布式事务。
Connection:对象代表与数据源进行的唯一会话。如果是客户端/服务器数据库系统,该对象可以等价于到服务器的实际网络连接。取决于提供者所支持的功能,Connection 对象的某些集合、方法或属性有可能无效。
Java.sql.Connection:
Java.sql.Connection是属于JDBC API中核心接口,该接口定义描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。
Connection:
指应用于数据库之间物理上的一条有效链路,通过该链路应用可以与数据库进行交互,并且该链路由各个厂商的驱动程序来完成具体的实现细节,隐藏底层的复杂性。
Driver:
Java.sql.Driver:
每个驱动程序类必须实现的接口。 Java SQL 框架允许多个数据库驱动程序。 每个驱动程序都应该提供一个实现 Driver 接口的类。 DriverManager的getConnection方法会尽可能的寻找Driver的实现类,并通过该实现类的connect方法去获取一个连接,并且该连接是由DriverManager来决定其一些属性的,例如url,username,password。
通过Class.forName();可以显示的向DriverManager注册一个驱动程序。
以下是大部分的数据库厂商以及对应提供的驱动实现类:
JDBC-ODBC Bridge (com.ms.jdbc.odbc.JdbcOdbcDriver)
JDBC-ODBC Bridge (sun.jdbc.odbc.JdbcOdbcDriver)
HSQLDB (server) (org.hsqldb.jdbcDriver)
HSQLDB (file) (org.hsqldb.jdbcDriver)
Ingres (com.ingres.jdbc.IngresDriver)
Informix (com.informix.jdbc.IfxDriver)
inetdae7 (com.inet.tds.TdsDriver)
IBM DB2 (COM.ibm.db2.jdbc.app.DB2Driver)
Cloudscape (COM.cloudscape.JDBCDriver)
MySQL (com.mysql.jdbc.Driver)
MySQL (org.gjt.mm.mysql.Driver)
MS SQLServer (net.sourceforge.jtds.jdbc.Driver)
MS SQLServer (com.merant.datadirect.jdbc.sqlserver.SQLServerDriver)
MS SQLServer (2005) (com.microsoft.sqlserver.jdbc.SQLServerDriver)
MS SQLServer (2000) (com.microsoft.jdbc.sqlserver.SQLServerDriver)
MS SQLServer (com.internetcds.jdbc.tds.Driver)
Oracle (oracle.jdbc.driver.OracleDriver)
PostgreSQL (org.postgresql.Driver)
Sybase (com.sybase.jdbc2.jdbc.SybDriver)
Vertica (com.vertica.Driver)
连接池:数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
JDBC4.0 API已经将数据库连接池纳入到规范当中,意在在众多的连接池中制定一套规范,使得应用和连接池之间更加透明化。由此可见,连接池的重要程度。
以上几个概念之间的关系:
- 大小: 20.4 KB
- 大小: 14.4 KB
分享到:
相关推荐
知识点一:Java数据库连接池基本概念 数据库连接池是一种容器,它预先创建一定数量的数据库连接,并将这些连接保存在一个可共享的池子中。当应用程序请求数据库连接时,连接池会提供一个现有的连接,而无需重新建立...
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作的效率和性能。在Java应用程序中,频繁地创建和关闭数据库连接会导致大量的系统资源浪费,而连接池则可以复用已建立的...
本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...
总的来说,Java数据库连接池如C3P0和Druid,以及Spring的JdbcTemplate,都是为了优化数据库操作而设计的工具。它们各自有其特点和优势,开发者可以根据项目需求选择合适的技术。在使用过程中,充分理解和合理配置...
Java数据库连接池是Java应用程序管理数据库连接的一种高效方式。它避免了每次需要访问数据库时创建新的连接,而是预先创建一定数量的连接并保存在池中,当程序需要时可以从池中获取,用完后归还,从而提高了系统性能...
本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...
本文将详细介绍如何在 Java 中实现一个完整的数据库连接池,并探讨其核心概念、工作原理以及如何根据需求进行配置。 首先,我们需要理解数据库连接池的基本概念。数据库连接池是一种对象池设计模式的应用,它维护了...
Java数据库连接池的原理与应用 在Java开发领域,数据库连接池(Database Connection Pool,简称DBCP)是一种提高数据库访问性能、降低资源消耗的重要技术。它通过预先建立一定数量的数据库连接,存储在一个“池”中...
### JAVA 使用数据库连接池连接Oracle数据库全代码解析 #### 一、概述 本文将详细介绍如何在Java项目中使用Apache DBCP(Database Connection Pool)来连接Oracle数据库,并提供完整的示例代码。通过这种方式,我们...
Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...
Java数据库连接池C3P0是一种常用的开源数据库连接管理工具,它通过提供连接池服务,提高了应用程序处理数据库连接的效率,降低了系统资源的消耗。在Java应用中,尤其是在服务器端,数据库连接的创建和关闭是相对耗时...
数据库连接池是Java应用程序中非常重要的一个组件,它在提高应用性能、节省系统资源方面起着关键作用。本文将深入探讨如何使用Java手写数据库连接池,并基于maven进行项目构建。我们将分析四个核心类的功能,以及...