APP下载

基于java实现访问oracle数据库的方法

2014-04-29林晶晶王梦佳杨文晖

电子世界 2014年15期
关键词:数据库

林晶晶 王梦佳 杨文晖

【摘要】随着Java Web的迅速发展,数据库连接已成为应用程序开发中的主要问题之一,连接数据库的效率也成为直接影响应用程序执行效率的因素。本文以Oracle数据库系统为例,详细介绍了在Java程序中访问数据库的传统数据库的连接方法和数据库连接池技术,并对此进行了分析和比较。

【关键词】Java;数据库;JDBC;连接池

1.引言

随着Java Web技术和计算机网络的迅速发展,人们对网络资源的共享提出了更高的要求。在网络环境中,对于数据的访问往往都是非常频繁的。在Java Web的应用程序开发中使用Java访问数据库,是整个应用程序开发过程中的主要问题之一。下面就将以Oracle数据库系统为例,阐述在Java程序中访问数据库的传统的数据库连接方法和数据库连接池技术。

2.传统的数据库连接方法

2.1 JDBC简介

JDBC是用java连接数据库最为传统的方法,下面详细阐述在java程序中它具体是怎么實现的。

2.1.1 JDBC概念

JDBC的全称是Java Database Connectivity,即Java数据库连接。JDBC是标准的Java访问数据库的API。JDBC定义了数据库的连接、SQL语句的执行以及查询结果集的遍历等。它由一组用Java编程语言编写的类和接口组成,位于包java.sql下面,如java.sql.Connection,java.sql.Statement,java.sql.ResultSet等。JDBC提供给Java程序使用的,它将各种数据库的差异对Java程序屏蔽了起来,Java程序可以使用同样的可移植的接口访问数据库,使Java的应用程序屏蔽了数据库领域,同时保持了Java语言的“一次编写,各处运行”的优点。

2.1.2 JDBC的结构

JDBC主要有两类接口:面向程序开发人员的JDBC API和面向JDBC驱动程序的JDBC DRIVER API。前者是开发人员用来编写前端应用程序的,后者是由数据库厂商开发的。

(1)JDBC API由两个部分组成,一个是核心的API,其类包路径为javax.sql,这是J2EE的一部分,它具有可滚动的结果集、批量更新的实现类。另一个是扩展的API,其类包的路径为javax.sql,这是J2EE的一部分,它具有访问JNDI资源、分布式事务等实现类。四个重要的JDBC API接口:

Java.sql.DriverManager:用于加载驱动程序和建立新的数据库链接。

Java.sql.Connection:完成对某一指定数据库的链接。

Java.sql.Statement:管理在指定数据库连接上的SQL语句的执行。

Java.sql.ResultSet:用来从数据库返回的结果集。

(2)JDBC Driver API是面向驱动程序开发商的编程接口。

JDBC驱动程序根据其实现方式分为4种类型:

JDBC-ODBC bridgedriver(JDBC-ODBC桥接方式);

Native-API Partly-Java driver(本地API方式);

Net-ProtocolAll-Java driver(网络协议方式);

Native-Protocol All-Java driver(本地协议方式)。

这四种方式用于不同的场合,它们的运行效果也不相同。选择合适和正确的JDBC驱动程序,是提高数据库访问效率时应该考虑的一个重要因素。

2.1.3 JDBC的功能

(1)JDBC的基本功能如下:连接数据库;向数据库执行查询操作;向数据库执行更新操作;向数据库执行插入操作;向数据库执行删除操作;执行存储过程。

(2)JDBC支持数据库访问的两层和三层模型。两层模型是Java应用程序或Apple直接与数据库进行交互操作的模型;三层模型是在应用与数据库之间,有一个中间应用服务器。

2.2 JDBC的实现

通过JDBC可以用Java访问远程oracle数据库和本地oracle数据库,方法是一样的。但在加载驱动包是应该注意要根据所使用的相应的JDK环境来加载相应的包。需要注意的是

classes12.jar:for Java 1.2 and 1.3

ojdbc14.jar:for Java 1.4 and 1.5

ojdbc5.jar:for Java 1.5

ojdbc6.jar:for Java 1.6

本文用的是Java 1.6,所以加载的是ojdbc6.jar这个包。

具体实现的部分代码如下:

这里的url的格式应该为:

String url= "jdbc:oracle:thin:@"+ip+":"+port+":"+dbName;

其中ip为要访问的数据库的IP地址,port为要访问的数据库的端口号,dbName为要访问的数据库名。

3.数据库连接池的连接技术

3.1 数据库连接池简介

数据库连接池(Connection pool),它是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请、使用、释放。

数据库连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非要建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非要将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

3.2 数据库连接池影响因素

(1)最小连接数:是连接池一直保持的数据库连接。(2)最大连接数:是连接池能申请的最大连接数。(3)最小连接数与最大连接数相差太大:那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。

3.3 数据库连接池运行机制

(1)从连接池获取或者创建可使用的连接。(2)使用完毕之后,把所使用的连接返还给连接池。(3)在系统关闭前,断开所有连接并释放连接占用的系统资源。(4)还能够处理无效连接,并且能够限制连接池中的连接总数不低于某个预定值和不超过某个预定值。

3.4 数据库连接池实现

在Java中常用的数据库连接池有C3P0、Proxool、DBCP、BoneCP、Druid、Tomcat jdbc pool等等。本文运用的是Tomcat jdbc pool。

Tomcat jdbc pool是Tomcat7新的连接池。Tomcat 在7.0以前的版本都是使用commons-dbcp作为连接池的实现,但是Tomcat从7.0开始引入一个新的模块:Tomcat jdbc pool。Tomcat jdbc pool可在Tomcat中直接使用,也可以在独立的应用中使用。若tomcat jdbc pool在java中单独使用,加入tomcat-jdbc.jar和tomcat-juli.jar这两个包就可以了;若作为数据源使用的话,就要借助于Spring框架,用它来管理tomcat jdbc-pool的连接。在工程中還要导入三个包:spring-contex-3.2.2.RELEASE.jar, spring-core-3.2.2.RELEASE.jar,org.springframework.beans-3.1.0.M1.jar.还要将配置好的数据源文件DSPoolAppContext.xml放入相应的目录下。这样工程才可以运行。下面以作为数据源使用来具体说明。

(1)DSPoolAppContext.xml配置文件的部分代码。

(2)在java中使用数据源的代码。

4.传统数据库连接的方法与数据库连接池技术的比较

JDBC作为一种数据库访问技术,具有简单易用的优点。但使用这种方式进行Web应用程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接。建立连接是一个费时的活动,而且系统还要分配内存资源。这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。可是对于现在的Web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降。还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去。因此为了提高数据库的连接效率而采用了数据库连接池技术。使用数据库连接池的好处有:资源重用;更快的系统响应时间;统一的连接管理,避免数据库连接泄漏。所以使用数据库连接技术可以解决传统数据库连接所出现的问题。另外本文用到的连接池是Tomcat7.0中的tomcat jdbc pool,而它又具有以下特点:它近乎兼容dbcp,性能更高;通过异步方式获取连接;支持高并发应用环境;比较简单;有更好的空闲连接机制等等。

5.总结

本文以Oracle数据库系统为例,阐述了在Java程序中访问数据库的传统的数据库连接方法和数据库连接池技术并进行了分析比较。但本文中仍存在一些不足的地方,接下来的工作是通过更多的测试来不断完善。

参考文献

[1]罗荣,唐学兵.基于JDBC的数据库连接池的设计与实现[J].计算机工程,2004.

[2]何洪舟.Java程序中访问Oracle数据库的技术分析与实现[J].计算机应用与软件,2007.

[3]陈虹君.Java Web与数据库连接池技术的应用研究与实践[D].2008.

[4]李刚.Java数据库技术详解[M].北京工业出版社,2010.

[5]百度百科.[EB/OL].http://baike.baidu.com/view/84055.htm?fr=Aladdin.

[6]Apache Tomcat 7官网.The Tomcat JDBC Connection Pool. https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html.

作者简介:林晶晶(1986—),女,甘肃临洮人,成都理工大学信息科学与技术学院硕士研究生在读,研究方向:计算机网络应用技术。

猜你喜欢

数据库
数据库
数据库
数据库
数据库
数据库
数据库