通过JDBC数据库连接oracle数据库的十大技巧
日期:2007年9月26日 作者: 查看:[大字体 中字体 小字体]-
Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。
1、在客户端软件开发中使用Thin驱动程序
在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,Oracle建议在客户端软件的开发中使用OCI驱动程序,这似乎是正确的。但我建议使用Thin驱动程序,因为通过多次测试发现,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。
2、关闭自动提交功能,提高系统性能
在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能,如下所示:
conn.setAutoCommit(false);
值得注意的是,一旦关闭了自动提交功能,我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。
3、在动态SQL或有时间限制的命令中使用Statement对象
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。
此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。
4、利用helper函数对动态SQL命令进行格式化
在创建使用Statement对象执行的动态SQL命令时,我们需要处理一些格式化方面的问题。例如,如果我们想创建一个将名字O'Reilly插入表中的SQL命令,则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法,然后在连接字符串心服用公式表达一个SQL命令时,使用创建的helper方法。与此类似的是,我们可以让helper方法接受一个Date型的值,然后让它输出基于Oracle的to_date()函数的字符串表达式。
5、利用PreparedStatement对象提高数据库的总体效率
在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。
6、在成批处理重复的插入或更新操作中使用PreparedStatement对象
如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():
PreparedStatement pstmt3D null;
- [1] [2] 下一页
-
- 通过JDBC数据库连接oracle数据库的十大技巧 相关文章:
- ·Photoshop将普通照片处理为圣诞夜景
- ·XFrog与3DsMax绘卡通菜园:南瓜篇
- ·IE8通过Web标准测试 明年推测试版
- ·Photoshop图像合成教程:艺术化普通照片
- ·Photoshop绘制卡通风格可爱的圣诞帽
- ·Vista下如何通过蓝牙手机控制计算机
- ·Photoshop扣图实例:用通道扣复杂图像
- ·XFrog与3DsMax绘卡通菜园:蘑菇篇
- ·XFrog与3DsMax绘卡通菜园:花草篇
- ·可爱卡通小蜜蜂睡觉了Flash教程
- 通过JDBC数据库连接oracle数据库的十大技巧 相关软件
- ·《冰封王座》地图:通灵王外传-叶王的复仇V1.4
- ·《变形金刚》100%通关存档
- ·《魔兽争霸》:《天地劫》地图冰璃单通录象
- ·《极品飞车9:最高通缉》电视广告
- ·GBA《降世神通》模拟器
- ·《卡通明星大乱斗》射击试玩
- ·《华纳卡通爆裂球》游戏试玩
- ·九种性格:如何跟不同性格的人沟通
- ·《荣誉勋章之空降神兵》中英文版通用 免CD补丁
- ·《帝国时代3之酋长》中英文通用免CD补丁
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Oracle用户权限的管理
- ·解读Oracle 9201的控制文件
- ·利用Oracle9i XML DB 来解决复杂编码问题
- ·Oracle数据操作和控制语言问题详解
- ·Oracle数据库密码文件的使用和维护
- ·如何在Oracle里用存储过程定期分割表
- ·杜绝安全隐患 容易忽视Oracle安全问题
- ·Oracle SQL 内置函数的使用方法及结果
- ·用Oracle的解析函数发现序列间隙
- ·Oracle初学者入门指南-什么是DUL?
- ·深刻理解 Oracle 数据库的启动和关闭
- ·Oracle DBA数据库结构试题精选
- ·SQL Server与Oracle链接服务器应用
- ·Oracle利用UTL_MAIL发送电子邮件
- ·[Oracle]探讨数据库的数据导入方法
- ·[Oracle]进程结构和内存结构的实例
- ·[Oracle]Redo log日志组故障分析
- ·[Oracle]用函数格式化EXPLAIN PLAN
- ·[Oracle]手工转移数据库Step By Step
- ·Oracle DBMS_REPAIR包修复损坏数据块
