使用JDBC進行數據訪問spring
Spring框架JDBC抽象提供的值最好由下表中列出的操做序列來顯示。下表顯示了Spring負責哪些操做以及哪些操做是須要你去處理。數據庫
動做行爲安全 |
Spring 微信 |
你負責的app |
定義鏈接參數框架 |
x測試 |
|
打開鏈接優化 |
x編碼 |
|
指定SQL語句spa |
x |
|
申明參數並提供參數值 |
x |
|
預處理並執行語句 |
x |
|
設置循環以遍歷結果(若是有)。 |
x |
|
處理每一個迭代。 |
x |
|
處理異常 |
x |
|
處理事務 |
x |
|
關閉鏈接、語句和結果集。 |
x |
JDBC數據庫訪問方法的選擇
你能夠在幾種方法中進行選擇,以造成JDBC數據庫訪問的基礎。除了三種類型的JdbcTemplate以外,一種新的SimpleJdbcInsert
和SimpleJdbcCall
方法優化了數據庫元數據,而RDBMS(Relational Database Management System)對象樣式採用了與JDO(Java Data Object )查詢設計相似的面向對象的方法。一旦你開始使用這些方法之一,仍然能夠混合和匹配包含來自不一樣方法的特性。全部方法都須要一個兼容JDBC2.0的驅動程序,而一些高級特性須要一個JDBC3.0驅動程序。
JdbcTemplate是經典的、最流行的Spring JDBC方法。這種方法和全部其餘方法都在覆蓋下使用JdbcTemplate。
NamedParameterJdbcTemplate
封裝JdbcTemplate以提供命名參數,而不是傳統的JDBC ?佔位符。當一個SQL語句有多個參數時,這種方法提供了更好的可讀性和易用性。SimpleJdbcInsert
和SimpleJdbcCall
優化數據庫元數據以限制必要的配置量。這種方法簡化了編碼,所以您只須要提供表或過程的名稱,並提供與列名匹配的參數映射。只有當數據庫提供足夠的元數據時,此操做纔有效。若是數據庫不提供此元數據,則必須提供參數的顯式配置或指定配置。RDBMS對象,包括MappingSqlQuery、
SqlUpdate
和StoredProcedure,要求在初始化數據訪問層期間建立可重用和線程安全的對象。這種方法是在JDO查詢以後建立的,在JDO查詢中定義查詢字符串、聲明參數和編譯查詢。一旦這樣作,就可使用各類參數值屢次調用execute方法。
Spring JDBC包層次結構
Spring框架的JDBC抽象框架由四個不一樣的包組成:
core: org.springframework.jdbc.core包含JdbcTemplate
類及其各類回調接口,以及各類相關類。名爲org.springframework.jdbc.core.simple的子包包含SimpleJdbcInsert
和SimpleJdbcCall
類。另外一個名爲org.springframework.jdbc.core.namedparam的子包包含NamedParameterJdbcTemplate
類和相關的支持類。
datasource:org.springframework.jdbc.datasource包含一個實用程序類,用於輕鬆訪問數據源和各類簡單的數據源實現,可使用它們在Java EE容器外測試和運行未修改的jdbc代碼。名爲org.springfamework.jdbc.datasource.embedded的子包支持使用Java數據庫引擎(如HSQL、H2和Derby)建立嵌入式數據庫。
object:org.springframework.jdbc.object包含將RDBMS查詢、更新和存儲過程表示爲線程安全、可重用對象的類。請參見將JDBC操做建模爲Java對象。這種方法由JDO建模,儘管查詢返回的對象天然與數據庫斷開鏈接。這種更高級別的JDBC抽象依賴於org.springframework.jdbc.core包中的較低級別抽象。
support:org.springframework.jdbc.support包提供了SQLException
轉換功能和一些實用程序類。JDBC處理期間拋出的異常將轉換爲org.springframework.dao包中定義的異常。這意味着使用Spring JDBC抽象層的代碼不須要實現JDBC或RDBMS特定的錯誤處理。全部轉換的異常都未選中,這使你能夠選擇捕獲可恢復的異常,同時容許將其餘異常傳播到調用方。
使用JDBC核心類控制基本JDBC處理和錯誤處理
介紹如何使用JDBC核心類來控制基本的JDBC處理,包括錯誤處理。它包括如下主題:
使用JdbcTemplate
使用
NamedParameterJdbcTemplate
使用SQLExceptionTranslator
運行Statements
運行Queries
更新Database
檢索自動生成的Key
明天開始分別講上述 7個主題的使用。
關注和轉發 Spring 中文社區:
本文分享自微信公衆號 - Spring中文社區(gh_81d233bb13a4)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。