JDBC4.0初探

来源 :希望月报·上半月 | 被引量 : 0次 | 上传用户:onlysimon
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:JDBC驱动数据库连接是基于JAVA对数据库应用的首要问题,针对当前形形色色的数据库连接驱动程序,结合网络数据库开发的服务器配置、数据库驱动程序的安装、数据库数据的存储、连接的效率和资源的占用情况,探讨了JDBC4.0在数据库连接处理方面的应用和技术要点,逐步了解JDBC4.0关于数据库连接池的功能。对JDBC4.0的数据连接处理方面进行初探。
  关键词:JDBC4.0; 数据库连接; 数据库连接池
  
  (JDBC)自1997年的产生至今,JDBC类库已被广泛的接受和实现。类库的灵活性使得它可以有很多个具体实现。 增强Connection和Statement接口,改善对连接状态的跟踪,在池环境中对状态对象的管理更具灵活性。 Statement :增加了isClosed和getResultSetHoldability方法。JDBC API提供了让java程序访问一个或多个数据源的方法。
  1.JDBC4.0初探
  1.1 数据库连接
  要获取一个连接,应用程序可以与以下两者交互:
   DriverManager类与一个或多个Driver实现协作
   一个DataSource实现
  使用DataSource对象是一个较好的方法,因为它增强了应用程序的可移植性。它使得维护更方便,并使得应用程序可以透明的使用连接池和分布性事务。所有J2EE组件都使用DataSource对象与数据源建立并获得连接。
  本章描述不同类型的JDBC驱动和对Driver接口、DriverManager类和基础DataSource接口的使用。DataSource实现支持连接池和分布性事务。
  1. 驱动类型
  1) Type1—作为其他数据访问API的影射实现JDBC API,如ODBC.
  2) Type2—部分用java语言编写,部分用原生代码.驱动使用原生客户库指定连接的数据源.
  3) Type3—使用纯JAVA客户端并通过中间件服务器使用独立于数据库的协议来通信.之后,中间件服务器把客户传送到数据源.
  4) 使用纯JAVA并对指定数据源实现网络协议.客户端直接连接到数据源.
  前两种类型因为原生代码的关系,它的移植性受到限制.
  2. Driver接口
  JDBC驱动必须实现Driver接口,该实现必须包含一个静态初始化器,该初始化器在驱动加载时被调用。该初始化器用DriverManager把自己注册成一个新实例。
  代码如例 4-1:
  public class AcmeJdbcDriver implements java.sql.Driver{
  static {
  java.sql.DriverManager.registerDriver(new AcmeJdbcDriver());
  }
  …
  }
  3. DriverManager类
  DriverManager类与Driver借口协作来管理JDBC客护端可用的驱动集.当客户请求连接并提供了URL,DriverManager负责寻找一个认识该URL的驱动,并用该驱动连接到对应的数据源。
  例4-2:使用传统方法利用DriverManager类获得一个数据库连接.
  {
  ...
  //载入数据库驱动并实例化之
  Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
  //获得数据库物理连接
  Connection conn=DriverManager.getConnection(url,somUser,somPw);
  ...
  }
  类DriverManager与接口Driver和Connection的关系
  如图4-1及4-2所示:DriverManager可以注册多个数据库驱动,而每种驱动(实例)可提供多个物理连接。
  


  图4-2传统方法中应用程序请求一个数据库连接的大致流程
  如图2所示,应用程序在请求一个数据库连接时的流程如下:
  1) 首先由JVM(Java虚拟机)载入数据库厂商依赖(vender dependent)的数据库驱动程序并注册该驱动。
  另外,JDBC规范规定:任何JDBC驱动必须实现Driver接口,而且必须包含一个静态构造器(class constructor,也叫类构造器,这里的构造器相当于C++中的构造函数),该构造器的内容如例2代码段:
  实施(implement)接口Driver的驱动程序应包含的静态构造器的内容
  Public class SomeDriver implements java.sql.Driver{
  Static{
  java.sql.DriverManager.registerDriver(new SomeDriver());
  }
  ...
  }
  
  正如你所看到的一样:数据库驱动程序被载入JVM后实例化的同时,已经隐含了注册的过程(类构造器在类被载入JVM后将被立即调用),这也就是为么语句Class.forName(driverName).newInstance()与DriverManager.registerDriver(SomeDriver)能达到同等效果的原因。
  2) 当数据库驱动成功载入并注册后,接下来就可以使用诸如DriverManager.getConnection(
  url,someUser,somePw)类方法获得对应URL的数据库连接对象.
  其实DriverManager.getConnection(url,someUser,somePw)等方法的具体实施大致如下:在数据库驱动加载并成功注册的前提下,JDBC驱动必须实现Driver接口,该实现必须包含一个静态初始化器,该初始化器在驱动加载时被调用。该初始化器用DriverManager把自己注册成一个新实例。代码如例 10-1: public class AcmeJdbcDriver implements java.sql.Driver{
  static {
  java.sql.DriverManager.registerDriver(new AcmeJdbcDriver());
  }
  …
  当应用程序载入一个Driver实现,静态初始化器会自动注册一个驱动的实例。
  为保证可以通过该机制载入驱动,各驱动需要提供一个niladic构造函数。
  当想与注册过的驱动交互时,DriverManager类调用Driver方法。Driver接口也包括acceptsURL方法。DriverManager可以使用该方法来决定对给定的URL哪个注册的驱动可以被使用。
  当DriverManager试图建立一个连接时,它会调用驱动的connect方法并传递驱动的URL。如果Driver的实现知道该URL,它会返回一个Connection对象;否则返回null。
  1.2数据库连接池
  在基础DataSource实现中,客户端Connection对象和物理数据库连接是1:1对应的关系。当Connection对象关闭时,物理连接也被丢弃。因此,在每个客户会话中都会带来打开、初始化和关闭物理连接的过度使用。
  连接池通过维护一个物理数据库连接存贮区,解决了这个问题。它可以被客户会话反复使用。连接池极大的提高了性能和可伸缩性,尤其在三层环境中多客户端或以共享较小的物理数据库连接数。图5-1,JDBC驱动提供了一个ConnectionPoolDataSource实现,应用服务器可以用来建立和管理连接池。
  


  用来管理连接池的算法是专门实现的而且随着应用服务器的不同而不同。
  DataSource实现连接池除了提高性能和可伸缩性以外,JDBC应用看不出在获取DataSource对象来实现连接池和不获取之间有任何不同。然而,在应用服务器和驱动级实现之间有一些重要的区别。一个基础DataSource实现,没有实现连接池,典型的,由JDBC驱动厂商提供。在基础DataSource实现中,下面的是真实的:
  DataSource.getConnection方法创建一个新的Connection对象,来代表一个物理连接并封装对该连接的所有安装和管理工作。
  Connection.close方法关闭物理连接并释放相关资源。
  在包括连接池的DataSource实现中,在幕后有一系列重大事件发生。在如上实现中,下面的是真实的:
  DataSource实现包括一个实现的指定连接池模块会管理一缓冲区的PooledConnection对象。DataSource对象典型的由应用服务器实现作为一层在驱动实现ConnectionPoolDataSource和PooledConnection接口的顶层。
  DataSource.getConnection调用PooledConnection.getConnection方法来获得一个指定物理连接的逻辑句柄。只有当连接池中没有可用的连接时,才会出现建立新物理连接的花费。当需要一个新的物理连接时,连接池管理器会调用ConnectionPoolDataSource的getPooledConnection方法来创建一个。管理物理连接的工作由PooledConnection对象代理。
  Connection.close方法关闭逻辑句柄,但物理连接还存在。连接池管理器被通知指定的PooledConnection对象现在可以重用了。如果应用程序试图重用逻辑句柄,Connection实现会抛出一个SQLException。
  单一一个物理PooledConnection对象会在生命期内产生许多逻辑Connection对象。对一个给定的PooledConnection对象,只有最新生成的逻辑Connection对象才有效。
  一个连接池管理器通过调用PooledConnection.close方法关闭物理连接。
  2. 结语
  经过上述阐述和代码实战演练,JDBC4.0显示了它强大的数据库连接能力,充分吸收了JDBC其他版本中和其他数据库连接驱动的优点和特性,为数据库编程打下一个夯实的基础。
  
  参考文献
  [1](美)George Reese.JDBC与Java数据库编程[M].中国电力出版社,2002.3.
  [2](美) Sun Microsystems, Inc.JDBC4.0 Documention[J].2003
其他文献
摘要:二战结束后,作为战败国的日本,经济遭到了毁灭性的打击。然而,仅仅用了十几年的时间,日本便在战争的废墟上,实现了经济的腾飞,创造了经济的奇迹,一跃成为世界上第二大经济强国。究其根源,日本的企业文化是最重要的影响因素。本文将从自然环境、民族特性、民族心理、宗教思想观念等方面来剖析日本企业文化形成的原因。  关键词:企业文化;生存危机;民族    1980年,美籍日裔教授威廉。大内出版了《Z理论—
期刊
摘 要:《离散数学》的教学应既注重基础知识的传授,又重视学生能力的培养。要增强教学的趣味性、思想性、激发学生的教学热情。  关键词:离散数学;教学;知识;能力    随着计算机科学和信息科学的高速发展,许多数学内容,甚至有些是很古典的数学内容获得了新的生命和新的自身价值。  离散数学作为有利的数学工具,对计算机的发展、计算机科学的研究起着重大的作用。包括数据结构、自动机理论、可计算性理论,人工智能
期刊
摘 要:大学生是肩负国家未来的希望的一代,具有较高的知识水平,但是近年来却屡屡发生犯罪事件,令我们不得不反思我们的法律教育,本文认为大学生法律教育应当做到“三个结合”:法律教育与信仰教育、生命教育、心理健康教育相结合,不仅增强大学生的法律知识,还提高其接受法律、理解法律和持守法律的素质。  关键词:法律教育;信仰教育;生命教育;心理健康教育    一、 法律教育与信仰教育相结合    什么是信仰呢
期刊
摘 要:本文通过对于大学英语四级考试阅读部分题型及试题变化的分析,针对性地提出不应对策略。仔细阅读要求考生从篇章和结构的高度进行深度理解或推断,快速阅读要求通过略读和寻读法,乃至文章逻辑关系、标点符号等方面的综合运用,实现对随后的题目有效的判断和填写。  关键词:策略;研读;略读;寻读;词汇量    在大学英语四级考试中,阅读理解试题部分包括数篇短文,要求考生能够读懂中等难度的文章,掌握主旨大意及
期刊
摘要:《水浒传》是一部家喻户晓的文学名著,受到人们的广泛欢迎。书中不但讲述了一个个生动传奇、引人入胜的故事,同时塑造了许多敢做敢为、性格鲜明的英雄形象。燕青是《水浒传》中的重要人物之一,排在梁山第三十六位。他的故事尽人皆知,但一直以来人们却忽略了他的才干,甚至对他有着某种程度的误解。论武艺,燕青不是第一位的,但论智慧,燕青却可圈可点。本文中作者从不同的角度对燕青作了全新的评价。使我们看到一个忠心耿
期刊
摘要:云峰诸山刻石以一个崖群刻的形式出现,历代考据、著录尤多、各家不一。本文根据近年来的调查材料,对云峰诸山刻石的数量、书写者、内容、成因和书法艺术风格等进行了梳理。  关键词:刻石;书法;考略    康有为《广艺舟双楫》云:“魏碑大种有三,一曰龙门造像,一曰云峰石刻,一曰冈山、铁山摩崖。”“云峰诸山刻石”系指分布在山东掖县的云峰山、太基山、平度市的天柱山和青州市的百峰山(今称玲珑山)的石刻文字。
期刊
摘 要:在语文新课程实施的过程中出现的“多元解读”导致了语文阅读教学中的一些隐忧和误区:一些学生漠视文本自身的存在及其呈现的意义,任意解读;而一些教师由于对多元解读的误解,在课堂上不敢和不善于发挥教师对学生的影响作用。在阅读教学中如何对待文本直接关系到对话的质量。在阅读教学中正确地对待文本,就要维护文本的主体地位、遵循文本自身的语境和结构、领悟语言之妙、体会文本自身的价值取向。  关键词:文本;阅
期刊
摘 要:教育目的是教育理论中的一个基本概念,但对众说纷纭的教育目的要如何去理解;现代教育目的是指个体价值的实现,追求教育的乐趣,但从我国的教育实践来看,这样快乐的教育的实现还是很遥远。   关键词:教育目的  Abstract: Educational aim is one of the basical conceptions in educational theoreticses,but how
期刊
摘 要:党的十六届四中全会,进一步提出了构建社会主义和谐社会的任务。和谐社会是政治文明发展的社会基础,政治文明是和谐社会发展的基本保障。特别是作为政治文明建设关键的制度文明与和谐社会有着十分紧密的联系。从某种意义上讲,制度文明不仅是和谐社会发展的保证,更是构建和谐社会的路径选择。  关键词:制度文明;和谐社会;路径选择    党的十六届四中全会,进一步提出了构建社会主义和谐社会的任务,强调形成全体
期刊
摘 要:《语文新课程标准》指出“识字教学要将儿童熟识的语言因素作为主要材料,同时充分利用儿童的生活经验,创设丰富多彩的教学情境”。因此,小学识字教学要善于发现挖掘儿童身边“熟识”的语言物质材料,采用多种教学措施指导识字方法,激发学生识字的浓厚兴趣。透过教材,走进生活,在需要中识字,培养学生见字识字的好习惯。在语言环境中学到的字词是活的,带着感情去记忆的东西是牢固的,能收到事半功倍的效果。  关键词
期刊