快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

葡京娱乐场网址所有平台_龟发之家论坛



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、使用Pr葡京娱乐场网址所有平台eparedStatement工具前进数据库的总体效率

在应用PreparedStatement工具履行SQL敕令时,敕令被数据库进行解析和编译,然后被放到敕令缓冲区。然后,每当履行同一个PreparedSt葡京娱乐场网址所有平台atement工具时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发明预编译的敕令,并且可以从新应用。在有大年夜量用户的企业级利用软件中,常常会重复履行相同的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利用法度榜样可以应用利用软件的工具模式,其他必要共享你的利用中的数据和操作的利用软件也可以应用利用软件中的工具模式。

10、使用SQL完成数据库内的操作

我要向大年夜家先容的最紧张的履历是充分使用SQL的面向聚拢的措施来办理数据库处置惩罚需求,而不是应用Java等历程化的编程说话。

假如编程职员要在一个表中查找许多行,结果中的每个行都邑查找其他表中的数据,着末,编程职员创建了自力的UPDATE敕令来成批地更新第一个表中的数据。与此类似的义务可以经由过程在set子句中应用多列子查询而在一个UPDATE敕令中完成。当能够在单一的SQL敕令中完成义务,何需要让数据在网上流来流去的?我建议用户卖力进修若何最大年夜限度地发挥SQL的功能。

(滥觞:http://www.yesky.com/)

您可能还会对下面的文章感兴趣: