欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
通過(guò)JDBC連接oracle數據庫的十大技巧1
Java數據庫連接(JDBC)API是一系列能夠讓Java編程人員訪(fǎng)問(wèn)數據庫的接口,各個(gè)開(kāi)發(fā)商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我積累了許多技巧,這些技巧能夠使我們更好地發(fā)揮系統的性能和實(shí)現更多的功能。 

    1、在客戶(hù)端軟件開(kāi)發(fā)中使用Thin驅動(dòng)程序 

    在開(kāi)發(fā)Java軟件方面,Oracle的數據庫提供了四種類(lèi)型的驅動(dòng)程序,二種用于應用軟件、applets、servlets等客戶(hù)端軟件,另外二種用于數據庫中的Java存儲過(guò)程等服務(wù)器端軟件。在客戶(hù)機端軟件的開(kāi)發(fā)中,我們可以選擇OCI驅動(dòng)程序或Thin驅動(dòng)程序。OCI驅動(dòng)程序利用Java本地化接口(JNI),通過(guò)Oracle客戶(hù)端軟件與數據庫進(jìn)行通訊。Thin驅動(dòng)程序是純Java驅動(dòng)程序,它直接與數據庫進(jìn)行通訊。為了獲得最高的性能,Oracle建議在客戶(hù)端軟件的開(kāi)發(fā)中使用OCI驅動(dòng)程序,這似乎是正確的。但我建議使用Thin驅動(dòng)程序,因為通過(guò)多次測試發(fā)現,在通常情況下,Thin驅動(dòng)程序的性能都超過(guò)了OCI驅動(dòng)程序。 

    2、關(guān)閉自動(dòng)提交功能,提高系統性能 

    在第一次建立與數據庫的連接時(shí),在缺省情況下,連接是在自動(dòng)提交模式下的。為了獲得更好的性能,可以通過(guò)調用帶布爾值false參數的Connection類(lèi)的setAutoCommit()方法關(guān)閉自動(dòng)提交功能,如下所示: 

    conn.setAutoCommit(false); 

    值得注意的是,一旦關(guān)閉了自動(dòng)提交功能,我們就需要通過(guò)調用Connection類(lèi)的commit()和rollback()方法來(lái)人工的方式對事務(wù)進(jìn)行管理。 

    3、在動(dòng)態(tài)SQL或有時(shí)間限制的命令中使用Statement對象 

    在執行SQL命令時(shí),我們有二種選擇:可以使用PreparedStatement對象,也可以使用Statement對象。無(wú)論多少次地使用同一個(gè)SQL命令,PreparedStatement都只對它解析和編譯一次。當使用Statement對象時(shí),每次執行一個(gè)SQL命令時(shí),都會(huì )對它進(jìn)行解析和編譯。這可能會(huì )使你認為,使用PreparedStatement對象比使用Statement對象的速度更快。然而,我進(jìn)行的測試表明,在客戶(hù)端軟件中,情況并非如此。因此,在有時(shí)間限制的SQL操作中,除非成批地處理SQL命令,我們應當考慮使用Statement對象。 

    此外,使用Statement對象也使得編寫(xiě)動(dòng)態(tài)SQL命令更加簡(jiǎn)單,因為我們可以將字符串連接在一起,建立一個(gè)有效的SQL命令。因此,我認為,Statement對象可以使動(dòng)態(tài)SQL命令的創(chuàng )建和執行變得更加簡(jiǎn)單。 

    4、利用helper函數對動(dòng)態(tài)SQL命令進(jìn)行格式化 

    在創(chuàng )建使用Statement對象執行的動(dòng)態(tài)SQL命令時(shí),我們需要處理一些格式化方面的問(wèn)題。例如,如果我們想創(chuàng )建一個(gè)將名字O‘Reilly插入表中的SQL命令,則必須使用二個(gè)相連的“‘‘”號替換O‘Reilly中的“‘”號。完成這些工作的最好的方法是創(chuàng )建一個(gè)完成替換操作的helper方法,然后在連接字符串心服用公式表達一個(gè)SQL命令時(shí),使用創(chuàng )建的helper方法。與此類(lèi)似的是,我們可以讓helper方法接受一個(gè)Date型的值,然后讓它輸出基于Oracle的to_date()函數的字符串表達式。 

    5、利用PreparedStatement對象提高數據庫的總體效率 

    在使用PreparedStatement對象執行SQL命令時(shí),命令被數據庫進(jìn)行解析和編譯,然后被放到命令緩沖區。然后,每當執行同一個(gè)PreparedStatement對象時(shí),它就會(huì )被再解析一次,但不會(huì )被再次編譯。在緩沖區中可以發(fā)現預編譯的命令,并且可以重新使用。在有大量用戶(hù)的企業(yè)級應用軟件中,經(jīng)常會(huì )重復執行相同的SQL命令,使用PreparedStatement對象帶來(lái)的編譯次數的減少能夠提高數據庫的總體性能。如果不是在客戶(hù)端創(chuàng )建、預備、執行PreparedStatement任務(wù)需要的時(shí)間長(cháng)于Statement任務(wù),我會(huì )建議在除動(dòng)態(tài)SQL命令之外的所有情況下使用PreparedStatement對象。 

    6、在成批處理重復的插入或更新操作中使用PreparedStatement對象 

    如果成批地處理插入和更新操作,就能夠顯著(zhù)地減少它們所需要的時(shí)間。Oracle提供的Statement和 CallableStatement并不真正地支持批處理,只有PreparedStatement對象才真正地支持批處理。我們可以使用addBatch()和executeBatch()方法選擇標準的JDBC批處理,或者通過(guò)利用PreparedStatement對象的setExecuteBatch()方法和標準的executeUpdate()方法選擇速度更快的Oracle專(zhuān)有的方法。要使用Oracle專(zhuān)有的批處理機制,可以以如下所示的方式調用setExecuteBatch(): 

PreparedStatement pstmt3D null; 
try { 
((OraclePreparedStatement) 
pstmt).setExecuteBatch(30); 
... 
pstmt.executeUpdate(); 


    調用setExecuteBatch()時(shí)指定的值是一個(gè)上限,當達到該值時(shí),就會(huì )自動(dòng)地引發(fā)SQL命令執行,標準的executeUpdate()方法就會(huì )被作為批處理送到數據庫中。我們可以通過(guò)調用PreparedStatement類(lèi)的sendBatch()方法隨時(shí)傳輸批處理任務(wù)。 

    7、使用Oracle locator方法插入、更新大對象(LOB) 

    Oracle的PreparedStatement類(lèi)不完全支持BLOB和CLOB等大對象的處理,尤其是Thin驅動(dòng)程序不支持利用PreparedStatement對象的setObject()和setBinaryStream()方法設置BLOB的值,也不支持利用setCharacterStream()方法設置CLOB的值。只有locator本身中的方法才能夠從數據庫中獲取LOB類(lèi)型的值??梢允褂肞reparedStatement對象插入或更新LOB,但需要使用locator才能獲取LOB的值。由于存在這二個(gè)問(wèn)題,因此,我建議使用locator的方法來(lái)插入、更新或獲取LOB的值。 

    8、使用SQL92語(yǔ)法調用存儲過(guò)程 

    在調用存儲過(guò)程時(shí),我們可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并沒(méi)有什么實(shí)際的好處,而且會(huì )給以后維護你的應用程序的開(kāi)發(fā)人員帶來(lái)麻煩,因此,我建議在調用存儲過(guò)程時(shí)使用SQL92。 

    9、使用Object SQL將對象模式轉移到數據庫中 

    既然可以將Oracle的數據庫作為一種面向對象的數據庫來(lái)使用,就可以考慮將應用程序中的面向對象模式轉到數據庫中。目前的方法是創(chuàng )建Java bean作為偽裝的數據庫對象,將它們的屬性映射到關(guān)系表中,然后在這些bean中添加方法。盡管這樣作在Java中沒(méi)有什么問(wèn)題,但由于操作都是在數據庫之外進(jìn)行的,因此其他訪(fǎng)問(wèn)數據庫的應用軟件無(wú)法利用對象模式。如果利用Oracle的面向對象的技術(shù),可以通過(guò)創(chuàng )建一個(gè)新的數據庫對象類(lèi)型在數據庫中模仿其數據和操作,然后使用JPublisher等工具生成自己的Java bean類(lèi)。如果使用這種方式,不但Java應用程序可以使用應用軟件的對象模式,其他需要共享你的應用中的數據和操作的應用軟件也可以使用應用軟件中的對象模式。 

    10、利用SQL完成數據庫內的操作 

    我要向大家介紹的最重要的經(jīng)驗是充分利用SQL的面向集合的方法來(lái)解決數據庫處理需求,而不是使用Java等過(guò)程化的編程語(yǔ)言。 

    如果編程人員要在一個(gè)表中查找許多行,結果中的每個(gè)行都會(huì )查找其他表中的數據,最后,編程人員創(chuàng )建了獨立的UPDATE命令來(lái)成批地更新第一個(gè)表中的數據。與此類(lèi)似的任務(wù)可以通過(guò)在set子句中使用多列子查詢(xún)而在一個(gè)UPDATE命令中完成。當能夠在單一的SQL命令中完成任務(wù),何必要讓數據在網(wǎng)上流來(lái)流去的?我建議用戶(hù)認真學(xué)習如何最大限度地發(fā)揮SQL的功能。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JDBC連接各種數據庫經(jīng)驗技巧集萃
Statement,PreparedStatement區別 - pan_java - Ja...
數據庫連接、設計以及備份技巧集錦
Java的數據庫連接編程(JDBC)技術(shù)
PreparedStatement | 技術(shù)流 | 隨筆 | 尹威的立方時(shí)空 | 立方網(wǎng)
JAVA連接ORACLE數據庫
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久