?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
目錄
JdbcTemplate
類NamedParameterJdbcTemplate
類SimpleJdbcTemplate
類DataSource
接口SQLExceptionTranslator
接口DataSourceUtils
類SmartDataSource
接口AbstractDataSource
類SingleConnectionDataSource
類DriverManagerDataSource
類TransactionAwareDataSourceProxy
類DataSourceTransactionManager
類SqlQuery
類MappingSqlQuery
類SqlUpdate
類StoredProcedure
類SqlFunction
類Spring JDBC抽象框架所帶來的價值將在以下幾個方面得以體現(xiàn):(注:使用了Spring JDBC抽象框架之后,應(yīng)用開發(fā)人員只需要完成斜體字部分的編碼工作。)
定義數(shù)據(jù)庫連接參數(shù)
打開數(shù)據(jù)庫連接
聲明SQL語句
預(yù)編譯并執(zhí)行SQL語句
遍歷查詢結(jié)果(如果需要的話)
處理每一次遍歷操作
處理拋出的任何異常
處理事務(wù)
關(guān)閉數(shù)據(jù)庫連接
Spring將替我們完成所有使用JDBC API進行開發(fā)的單調(diào)乏味的、底層細(xì)節(jié)處理工作。
使用Spring進行基本的JDBC訪問數(shù)據(jù)庫有多種選擇。Spring至少提供了三種不同的工作模式:JdbcTemplate, 一個在Spring2.5中新提供的SimpleJdbc類能夠更好的處理數(shù)據(jù)庫元數(shù)據(jù); 還有一種稱之為RDBMS Object的風(fēng)格的面向?qū)ο蠓庋b方式, 有點類似于JDO的查詢設(shè)計。 我們在這里簡要列舉你采取某一種工作方式的主要理由. 不過請注意, 即使你選擇了其中的一種工作模式, 你依然可以在你的代碼中混用其他任何一種模式以獲取其帶來的好處和優(yōu)勢。 所有的工作模式都必須要求JDBC 2.0以上的數(shù)據(jù)庫驅(qū)動的支持, 其中一些高級的功能可能需要JDBC 3.0以上的數(shù)據(jù)庫驅(qū)動支持。
JdbcTemplate - 這是經(jīng)典的也是最常用的Spring對于JDBC訪問的方案。這也是最低級別的封裝, 其他的工作模式事實上在底層使用了JdbcTemplate作為其底層的實現(xiàn)基礎(chǔ)。JdbcTemplate在JDK 1.4以上的環(huán)境上工作得很好。
NamedParameterJdbcTemplate - 對JdbcTemplate做了封裝,提供了更加便捷的基于命名參數(shù)的使用方式而不是傳統(tǒng)的JDBC所使用的“?”作為參數(shù)的占位符。這種方式在你需要為某個SQL指定許多個參數(shù)時,顯得更加直觀而易用。該特性必須工作在JDK 1.4以上。
SimpleJdbcTemplate - 這個類結(jié)合了JdbcTemplate和NamedParameterJdbcTemplate的最常用的功能,同時它也利用了一些Java 5的特性所帶來的優(yōu)勢,例如泛型、varargs和autoboxing等,從而提供了更加簡便的API訪問方式。需要工作在Java 5以上的環(huán)境中。
SimpleJdbcInsert 和 SimpleJdbcCall - 這兩個類可以充分利用數(shù)據(jù)庫元數(shù)據(jù)的特性來簡化配置。通過使用這兩個類進行編程,你可以僅僅提供數(shù)據(jù)庫表名或者存儲過程的名稱以及一個Map作為參數(shù)。其中Map的key需要與數(shù)據(jù)庫表中的字段保持一致。這兩個類通常和SimpleJdbcTemplate配合使用。這兩個類需要工作在JDK 5以上,同時數(shù)據(jù)庫需要提供足夠的元數(shù)據(jù)信息。
RDBMS 對象包括MappingSqlQuery, SqlUpdate and StoredProcedure - 這種方式允許你在初始化你的數(shù)據(jù)訪問層時創(chuàng)建可重用并且線程安全的對象。該對象在你定義了你的查詢語句,聲明查詢參數(shù)并編譯相應(yīng)的Query之后被模型化。一旦模型化完成,任何執(zhí)行函數(shù)就可以傳入不同的參數(shù)對之進行多次調(diào)用。這種方式需要工作在JDK 1.4以上。
Spring Framework的JDBC抽象框架由四個包構(gòu)成:core
、 dataSource
、object
以及support
。
org.springframework.jdbc.core
包由JdbcTemplate
類以及相關(guān)的回調(diào)接口(callback interface)和類組成。
org.springframework.jdbc.core.simple
子包則包含了
SimpleJdbcTemplate
類以及相關(guān)的SimpleJdbcInsert
類和SimpleJdbcCall
類。
org.springframework.jdbc.core.namedparam
子包則包含了NamedParameterJdbcTemplate
類以及其相關(guān)的支持類。
org.springframework.jdbc.datasource
包提供了一些工具類來簡化對DataSource
的訪問。同時提供了多種簡單的DataSource
實現(xiàn)。這些實現(xiàn)可以脫離J2EE容器進行獨立測試和運行。
這些工具類提供了一些靜態(tài)方法,允許你通過JNDI來獲取數(shù)據(jù)庫連接和關(guān)閉連接。同時支持綁定到當(dāng)前線程的數(shù)據(jù)庫連接。例如使用DataSourceTransactionManager
。
接著org.springframework.jdbc.object
包包含了一些類,用于將RDBMS查詢、更新以及存儲過程表述為一些可重用的、線程安全的對象。這種方式通過JDO進行模型化,不過這些通過查詢返回的對象是與數(shù)據(jù)庫脫離的對象。 這種對于JDBC的高層次的封裝是基于org.springframework.jdbc.core
包對JDBC的低層次封裝之上的。
最后,org.springframework.jdbc.support
包定義了SQLException
轉(zhuǎn)化類以及一些其他的工具類。
在JDBC調(diào)用過程中所拋出的異常都會被轉(zhuǎn)化為在org.springframework.dao
包中定義的異常。也就是說,凡是使用Spring的JDBC封裝層的代碼無需實現(xiàn)任何JDBC或者RDBMS相關(guān)的異常處理。所有的這些被轉(zhuǎn)化的異常都是unchecked異常,因而也給了你一種額外的選擇,你可以抓住這些異常,從而轉(zhuǎn)化成其他類型的異常被允許調(diào)用者傳播。