Spring學習筆記---8-SpringJDBC

這一篇是爲了研究SpringJDBC的。在項目中所用到的Spring的JDBC代碼不是很多,不過請注意,它又很重要,但代碼用的不多,只能說明SpringJDBC封裝的很好。

SpringJDBC 是Spring所提供的持久層技術。它的重要目的是降低使用JDBCAPI的門檻,以一種更直接,更簡潔的方式使用JDBC API。 在SpringJDBC裏,用戶僅需要做那些必不可少的事,而將資源獲取、statement創建、異常處理、資源釋放等繁雜乏味的工作交給Spring。如果你不適用ORM框架來完成對象與實體的映射,那JDBC就是最好的選擇,更何況他還那麼靈活。

在面試或者之前的項目中,經常會需要手動將JDBC中步驟完成,那現在就不需要這樣了,只需要將鏈接,數據庫信息寫到配置文件中,然後在Spring配置文件中得到其值,剩下的就可以交給Spring了,而你只需要將SQL及其參數正確的傳給JDBC模板,就可以了。

下面這個是jdbc.properties 文件中關於數據信息的配置,示例如下:

下圖是applicationContext-dataSource.xml 文件,下圖中將在服務器啓動時創建鏈接等等操作,在使用時直接使用即可。


上面這個圖的意思是導入相關的JDBC配置文件,然後得到其值,在使用的時候可以使用JDBC的JDBCTemplate模板信息。

SpringJDBC是用JDBC.properties配置數據庫信息,然後在applicationContext.xml中加載入,在這個項目中使用的是dbcp連接池,
使用jdbcTemplate聲明。


基本的數據操作

      數據庫的CRUD以及存儲過程調用時最基本的數據庫操作,jdbcTemplate提供了衆多的方法,通過JdbcTemplate,用戶可以用簡單的方法完成這些數據操作。
       由於本人在項目中很少使用這樣的方式,所以就直接使用書中源代碼來研究了。
       
         JdbcTemplate在內部通過PreoparedStatement執行SQL語句,所以可以使用綁定參數的SQL。
         JdbcTemplate已經把原來複雜數據更新操作簡化爲定義SQL語句,準備參數,調用 sql 這三個簡單的步驟。
         如下圖是很久之前的一段代碼:
         
         這段代碼就是SpringJDBC來做操作的,將前端傳入的參數作爲sql的參數,並調用相應的sql來完成操作。
          
實戰經驗:
       儘量使用可綁定參數的sql語句,以便數據庫可以複用SQL的執行計劃,提高數據庫的執行效率。此外,應儘量在Dao中使用類級別的靜態常量的(final static)定義SQL字符串,不應在方法內部聲明SQL字符串變量,以提高JVM的內存使用效率。
         如下圖:
        
            調用SQL的代碼如下:
       
       通過這種方式,就可以讓數據庫使用其執行計劃(數據庫概念)。通過這種將SQL抽離出來成爲常量的方式來提高JVM效率。

       需要指出的是,在實際使用中, 應當優先考慮使用不帶回調接口的JdbcTemplate方法。首先,回調使代碼顯得臃腫其次,回調並不能給我們帶來額外的好處。

返回數據庫的表自增主鍵值
        
       在項目中經常要用到自增主鍵值,而主鍵值是在插入數據之後才能得到的,在Hibernate中,新對象持久化之後,主鍵值會自動綁定到對象上,給程序的開發帶來了很大的方便。
       但是有一個問題:怎麼在高併發的情況下,執行操作的過程中保證主鍵不會重複。
      

批量操作
       如果需要一次性插入或更新多條記錄,當然可以簡單的通過調用update()方法完成任務,但這不是最好的實現方案。更好的選擇是使用JdbcTemplate批量更改數據的方法。一般情況下,後者擁有更好的性能,因爲更新的數據將被批量發送到數據庫中,它減少了對數據庫訪問的次數。這個本人用的比較少。

      用的最多的是一次性插入很多數據,但是沒有采用書中所說方法,用的是將值放到list中,然後對list進行循環,之後調用sql語句,完成操作。

      這裏介紹的是SpringJDBC,沒有采用ORMapping框架。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章