[Apache commons係列]DBUtils簡介-1.總述
inkfish原創,請勿商業性質轉載,轉載請注明來源(https://blog.csdn.net/inkfish )。
一言蔽之,DbUtils就是讓開發人員更方便的使用JDBC的工具類庫,它不是任何一種框架或數據庫。(來源:https://blog.csdn.net/inkfish)
DbUtils作用有仨:
1.丟一個SQL,給一個結果;
2.把結果包裝成Bean、Map、List或Object[]形式;
3.關閉Connection、Statement、ResultSet時候無需寫try catch,一行關閉。(來源:https://blog.csdn.net/inkfish)
審視下麵一段代碼有何缺點:(來源:https://blog.csdn.net/inkfish)
Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ………… } catch (SQLException ex) { ex.printStackTrace(); } finally { try { rs.close(); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } }
在這段代碼中,如果rs.close()或stmt.close()出現SQLException,則會導致連接泄露,這是初學者常犯的毛病,正確的寫法應該是:(來源:https://blog.csdn.net/inkfish)
Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ………… } catch (SQLException ex) { ex.printStackTrace(); } finally { try { rs.close(); } catch (SQLException ex) { } try { stmt.close(); } catch (SQLException ex) { } try { conn.close(); } catch (SQLException ex) { } }
顯然這裏代碼過多,而如果最初級的使用DbUtils的效果就是:(來源:https://blog.csdn.net/inkfish)
Connection conn = null; Statement stmt = null; ResultSet rs = null; try { ………… } catch (SQLException ex) { ex.printStackTrace(); } finally { DbUtils.closeQuietly(conn, stmt, rs); }
顯然少了很多代碼。(來源:https://blog.csdn.net/inkfish)
強烈建議用到純JDBC的項目使用該類庫,而其他比如用到iBatis、Hibernate、JPA的項目可以繞道而行。什麼樣的項目會用到JDBC?
1.通常初學者用JDBC比較多,隻是初學者為了打實基礎,練習階段少用框架和幫助類庫;
2.小型項目,小型項目不需要太多的數據庫操作,不需要考慮跨數據庫兼容問題,用框架並不會讓編碼更簡單;
3.需要高效率的項目,無論iBatis、Hibernate,到了底下還是JDBC,直接用JDBC訪問數據庫無疑是最優的效率最高的方案。
(來源:https://blog.csdn.net/inkfish)
2009年11月04日,DbUtils 1.3正式發布,與1.2相比,主要的變化的是對Java 1.5泛型和可變數組的支持,也就是說DbUtils 1.3必須運行於Java 1.5或更新的環境。
以下部分由官方網頁翻譯而來,官方主頁地址:https://commons.apache.org/dbutils/index.html
Commons DbUtils: JDBC工具組件綜述
DbUtils是一個小型的類庫,它設計用於使JDBC編程更加方便、簡單。JDBC編程中,資源的關閉是顯式的,極易導致編程錯誤,DbUtils把這些清理工作抽象出來,使得程序員編程時僅需要關心真正需要關心的,即:query和update數據。
DbUtils的一些優點:
1.杜絕資源泄漏。修正JDBC代碼並不困難,但是這是耗時而乏味的,這通常導致連接泄露並且難以跟蹤到;
2.清潔幹淨的持久化代碼。大段的持久化數據到數據庫代碼徹底精簡,剩下的代碼清晰地表達了編碼的意圖。
3.從ResultSet裏自動組裝JavaBean。你不再需要手工set每一行每一列的值到bean中,每一行數據都將會以一個Bean實例的形式出現。
DbUtils設計用於:
1.Small - 你應該在短時間內理解所有的包的用途;
2.Transparent - DbUtils在幕後並不做任何複雜的看似奇妙的工作,僅僅是你給一個查詢,他去執行並且清理資源;
3.Fast - 你並不需要n多個臨時對象給DbUtils。
DbUtils並不是:
1.一個對象/關係的橋梁 - 現在已經有很多優秀的O/R工具,DbUtils隻是給決定用純JDBC的開發場景使用的;
2.數據訪問對象(DAO)框架 - 雖然DbUtils能被用在DAO框架之中;
3.一個麵向對象的抽象的數據庫對象,比如表、列或是主鍵;
4.任何一種輕量級的框架 - DbUtils的目標僅是讓程序員直接而方便的使用JDBC的幫助類庫。
依賴
DbUtils以一個獨立的Jar包形式發布,僅僅依賴不低於1.5版本的Java。(來源:https://blog.csdn.net/inkfish)
最後更新:2017-04-02 04:01:44