[jdbc连接oracle数据库的连接字符串]通过JDBC连接oracle数据库的几个技巧

Oracle学习 2021-08-27 网络整理 可可

【shitiku.jxxyjl.com--Oracle学习】

          java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。

  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;
try {
((oraclepreparedstatement)
pstmt).setexecutebatch(30);
...
pstmt.executeupdate();
}

  调用setexecutebatch()时指定的值是一个上限,当达到该值时,就会自动地引发sql命令执行,标准的executeupdate()方法就会被作为批处理送到数据库中。我们可以通过调用preparedstatement类的sendbatch()方法随时传输批处理任务。

  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的数据库作为一种面向对象的数据库来使用,就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建java bean作为伪装的数据库对象,将它们的属性映射到关系表中,然后在这些bean中添加方法。尽管这样作在java中没有什么问题,但由于操作都是在数据库之外进行的,因此其他访问数据库的应用软件无法利用对象模式。如果利用oracle的面向对象的技术,可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作,然后使用jpublisher等工具生成自己的java bean类。如果使用这种方式,不但java应用程序可以使用应用软件的对象模式,其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。

本文来源:https://shitiku.jxxyjl.com/oraclexuexi/7685.html

  • 【weblogic配置oracle数据源】WebLogic与ORACLE数据库的连接配置

    weblogic6 0通过oracle客户端访问oracle 所以在weblogic6 0所在的机器上要正确安装oracle客户端才行 weblogic6 0可采用type2或type4的jdbc driver 与oracle数据库相连。下面分别介绍它们的配置方法:type2 jdbc drive...

    发布于:2021-08-28

    详细阅读
  • oracle数据库入门教程|如何学习Oracle?

    经常有一些oracle的初学者问到这个问题,这里算是一个统一答复。 1、如果有一定的数据库基础,知道sql是怎么回事,即使写不出来简单的sql,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和sql语言,不需要很深,更不需要去记忆那些复杂的sql命令,...

    发布于:2021-08-28

    详细阅读
  • [sql语句学习]PL/SQL学习笔记(七)

    层次查询select [level],column,expr from table [where condition][start with]起点(自底向上 自顶向下)[connect by prior + 主键 外键=外键 主键] 看你往哪个方向查自顶向下 左边放主键,右边放外键select...

    发布于:2021-08-28

    详细阅读
  • [oracle10g重建监听]oracle10g重建emdbcontrol

    oracle 10g重建em db control 1 drop configuration files and repository run :emca -deconfig dbcontrol db -repos drop 2 logon sqlplus as user sys or syste...

    发布于:2021-08-28

    详细阅读
  • [oracle]Oracle PL/SQL语言基础

    pl sql是oracle对标准数据库语言的扩展,oracle公司已经将pl sql整合到oracle 服务器和其他工具中了,近几年中更多的开发人员和dba开始使用pl sql,本文将讲述pl sql基础语法,结构和组件、以及如何设计并执行一个pl sql程序。   pl sql...

    发布于:2021-08-28

    详细阅读
  • 【oracle重建密码文件】重建密码文件--解决ORA-01991错误

    统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来)。 为了省事,直接冷备份oracle的数据文件,安装好oracle后,直接恢复到原来对应的目录。启动,出现:...

    发布于:2021-08-27

    详细阅读
  • ocp考试通过率|参加OCP考试的小技巧

    下面这些小技巧能帮助你准备和通过每个考试。   每个ocp考试包含55~80个问题,考试时间90分钟。首先回答你会的问题,这样不至于时间不够用。   许多问题的答案选项第一眼看上去都是一样的,要仔细阅读问题,不要直接跳到答案,一定要弄确切每个问题到底问什么。   大部分测试题都是基于场景的,有些场景...

    发布于:2021-08-27

    详细阅读
  • [jdbc连接oracle数据库的连接字符串]通过JDBC连接oracle数据库的几个技巧

    java数据库连接(jdbc)api是一系列能够让java编程人员访问数据库的接口,各个开发商的接口并不完全相同。以下是一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。   1、在客户端软件开发中使用thin驱动程序 在开发java软件方面,oracle的数据库...

    发布于:2021-08-27

    详细阅读
  • vi编辑器的使用技巧_VI的常见使用技巧

    一、简介 vi命令可以说是unix linux世界里最常用的编辑文件的命令了,很多人不喜欢vi因为它 的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。 本文旨在更有条理有归纳性地介绍vi的一些最常用命令和一些高级的应用。 二、基本命令介绍 1) 光标命令...

    发布于:2021-08-27

    详细阅读
  • 会话跟踪技术|用改变跟踪技术加速Oracle递增备份

    oracle 8i引进了恢复管理(rman),首次实现了真正的递增备份。在rman之前,数据库输出也能够递增进行,但一旦某个表的任何一块发生改变,整个表都需要重写。rman递增备份则仅需在给定的数据文件中重写被修改的部分,由此可大大节约了空间。  然而在版本10g之前,递增备份需要对...

    发布于:2021-08-27

    详细阅读

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计