关于JDBC连接数据库使用经验浅谈

来源 :家教世界·下半月 | 被引量 : 0次 | 上传用户:moyixin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:相比Hibernate、iBatis、DBUtils等,理论上JDBC的性能都超过它们。JDBC提供更底层更精细的数据访问策略,这是Hibernate等框架所不具备的。在一些高性能的数据操作中,越高级的框架越不适合使用。本文对在开发中对JDBC使用过程中一些经验总结。
  关键词:JDBC;数据库;经验
  一、JDBC原理
  Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC定义了一组操作数据库的接口,不同的数据库厂商提供了JDBC接口的实现,这个实现称为JDBC驱动。这样就可以通过JDBC接口来对不同数据库获得统一的操作。
  二、JDBC组成
  JDBC有两部分组成:JDBC API和JDBC Driver Interface.
  JDBC API:是提供给开发者的一组独立于数据库的API,对任何数据库的操作,都可以用这组API来进行.那么要把这些通用的API翻译成特定数据库能懂的“指令”,就要由JDBC Driver Interface来实现了;
  JDBC Driver Interface:是面向JDBC驱动程序开发商的编程接口,它会把我们通过JDBC API发给数据库的通用指令翻译给他们自己的数据库。为了使客户端程序独立于特定数据库驱动程序,JDBC规范建议开发者使用接口编程方式,即尽量使应用依赖java.sql 及javax.sql中的接口和类.
  三、JDBC操作数据库的一般步骤
  1: 注册驱动类:Class.forName("com.mysql.jdbc.Driver");
  2: 创建数据库连接 Connection conn = DriverManager.getConnection(dburl, user, password);
  3: 创建执行SQL的对象:Statement stmt = conn.createStatement();
  4: 执行SQL,并获取返回结果ResultSet rs = stmt.executeQuery(testsql);
  5: 处理返回结果,此处打印查询结果while (rs.next()) { .... };
  6: 关闭数据库连接:conn.close();
  四、JDBC连接数据库的技巧——以Oracle数据库为例
  1、驱动程序的选择。在客户机端软件的开发中,通过多次测试发现Thin驱动程序的性能都超过了OCI驱动程序所以我们选择Thin驱动程序。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯,可以获得最高的性能。
  2、关闭自动提交功能,提高系统性能。为了提高系统的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,方法为:conn.setAutoCommit(false);由于关闭了自动提交功能,所以需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。
  3、在动态SQL或有时间限制的命令中使用Statement对象。但实践中的测试表明,在有时间限制的SQL操作中,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
  4、利用helper函数对动态SQL命令进行格式化。在创建使用Statement对象执行的动态SQL命令时,一些格式化方面的问题需要处理,我们可以让helper方法。
  5、利用PreparedStatement对象提高数据库的总体效率。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。
  6、在成批处理重复的插入或更新操作中使用PreparedStatement对象。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。
  7、使用Oracle locator方法插入、更新大对象(LOB)。Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB,但需要使用locator才能获取LOB的值。由于存在这二个问题,因此,我建议使用locator的方法来插入、更新或获取LOB的值。
  8、使用SQL92语法调用存储过程。在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。   9、使用Object SQL将对象模式转移到数据库中。利用Oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式,不但Java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。
  10、利用SQL完成数据库内的操作。我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求,而不是使用Java等过程化的编程语言。
  五、JDBC使用经验
  相比Hibernate、iBatis、DBUtils等,理论上JDBC的性能都超过它们。JDBC提供更底层更精细的数据访问策略,这是Hibernate等框架所不具备的。在一些高性能的数据操作中,越高级的框架越不适合使用。如何对JDBC访问进行优化呢:首先要选择纯Java的JDBC驱动。其次是使用连接池——使用一个“池”来管理JDBC连接,并精心调试池配置的参数,目前可用的数据库连接池很多很多。再次是配置好合适的参数,经过严格的测试后使用。最后要学会重用Connection——最大限度使用每个数据库连接,得到了就不要轻易“丢弃”。有时候在一个过程中,会多次操作数据库,而仅仅需要一个连接就够了,没必用一次就获取一个连接,用完后关闭或者入池。这样会增加“池”管理的成本,千万别以为你用了“池”就可以随便申请和归还连接,都是有代价的。如果是一个庞大循环块中操作数据库,更应该注意此问题!同时,我们要学会重用Statement——对于一些预定义SQL,设置为静态常量,并尽可能重用预定义SQL产生的PreparedStatement对象。对于多次使用一种模式的SQL,使用预定义,而且是批处理的SQL可以获取更好的性能。查询时候优化结果集ResultSet,返回的结果集有不同的类型,优先选择只读结果集、不可滚动的属性。
  参考文献
  [1] 朱喜福,林建民,唐永新.JAVA程序设计[M].北京:人民邮电出版社,2001.
  [2] [美]泰勒,李东升等译,JDBC数据库编程与J2EE[M].北京:电子工业出版社,2008.
  [3] 宋善德,郭飞.基于Java的Web数据库连接池技术的研究[J]计算机工程与应用,2008:38(8)201-203
  作者简介:
  樊华(1983-),男,本科,张家界航空工业职业技术学院,研究方向:计算机应用。
其他文献
本文为《高中作文教学的有效策略研究》课题研究成果  近代著名教育家陶行知在他的一首诗里写道:“发明千千万,起点是一问。禽兽不如人,过在不会问。智者问得巧,愚者问得笨。人力胜天工,只在每事问。”宋代著名学者陆九渊说:“为学患无疑,疑则有进,小疑则小进,大疑则大进。”从他们的话中,我们可以看到他们对于“疑”与“问”的重视。这里的“疑”与“问”就是本文要探讨的问题意识。  所谓问题意识,是指人们在认识活
期刊
中国传统文化的云蒸霞蔚、博大精深,在建筑艺术上得到了充分的体现。据历史记载,在古代,世界上曾有过七大主要建筑风格,如古埃及、古西亚、古印度、古美洲建筑等,但传留至今,
摘 要:高校资助育人工作是大学生思想政治教育工作的重要组成部分。如何充分发挥资助工作的育人功能,构建发挥高校资助工作育人功能的路径,对于高等教育的可持续发展具有重大而深远的意义。本文分析了高校资助与育人的关系、内涵及必要性,并就加强资助工作的育人功能提出了对策。  关键词:资助工作;育人;内涵;路径  我国现阶段高校学生资助工作虽然已经形成规模,取得了良好成效,赢得了广泛的社会赞誉。但也应该看到,
脂肪团与肥胖症相关基因(Fat mass and obesity-associated gene,FTO)对能量摄入及脂肪代谢有显著的调节作用,是迄今发现的与肥胖症关系最为密切的基因。该基因的rs9939609位点
摘 要:目前,中国的职业教育处于30年以来发展的最好的时期,中等职业学校的体育教育也发生了巨大的变革,职业学校体育教育观念有了很大的转变。人们对职业学校体育教育的认识由低级走向高级,由封闭走向开放,由单一走向多元,由局部走向整体。本文对我国职业学校的教育观念的转变进行了较为系统的研究,探索其发展趋势,旨在为新时期职业学校体育教育的改革与发展提供一定的理论参考与依据。  关键词:职业学校;体育;观念
摘 要:体育电影中对女性的描述折射了女性在体育界甚至在社会的地位。本文试图从女性参与奥林匹克运动的历史,探寻女性在体育电影的地位,分析性别、种族等社会因素对女性的影响,了解女性在美国社会的地位和影响。  关键词:体育电影;女性;地位  一、女性参与奥林匹克运动历史回顾  十九世纪对于影响女性参与体育运动有两件大事必须要提:一、1848年7月,第一次妇女权利运动在美国纽约爆发。妇女们要求在教育、体育
摘 要:针对河北省新农村图书馆(室)传统战略管理体系中存在的问题,本文从河北省新农村农情出发,引进ERP理论打破传统的管理模式,建立高效型、实用型、特色型河北省新农村图书馆(室)战略管理体系,为新农村文化建设提供有力保障。  关键词:河北省新农村;新农村建设;ERP理论;新农村图书馆(室);战略管理体系  一、新农村图书馆(室)出现的必然性  知识就是力量,改革开放以来,我省农村发生了历史性的变化
摘 要:要加强偏远农村小学生课外阅读,发现存在的问题是:阅读兴趣不高;习惯不好;内容贫乏;环境不好。如何加强课外阅读?培养学生阅读兴趣;加强阅读指导;营造良好的阅读环境。  关键词:偏远农村;课外阅读;兴趣;实效  课外阅读是小学语文教学中一个重要的组成部分,是课堂教学的有益补充和延伸,通过大量的课外阅读,学生能感知丰厚的感情语言材料,增强语言积淀,提高读书能力,从整体上增强学生的语文素质,促进学