您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么簡述Spring JDBC,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
這里記錄我對Spring JDBC框架的學習。由于Spring JDBC和我之前做的工作有很多共同之處,學習經典Framework的設計,取長補短,為我所用。在這里,先佩服一下Rod JohnSon,他對數據庫,JDBC的理解非常深。看Spring jdbc框架的設計和源代碼,帶給了我很多以前沒有想到的東西。我們知道,Spring JDBC的主要目標是為了簡化JDBC的編程,方便我們構建健壯的應用程序。這里,它的一個基本設計理念,就是將JDBC編程中變化的和不變化的分開。在JDBC中,什么是變化的?毫無疑問,SQL語句是變化的。那什么是不變化的?正確的使用JDBC的方式是不變化的。
先看一段代碼。(自己的代碼就不拿來做示范了,先看Rod書吧)
public List getAvailableSeatlds(DataSource ds, int performanceld,
int seatType) throws ApplicationException {
String sql = "SELECT seat_id AS id FROM available_seats " +
"WHERE performance_id = ? AND price_band_id = ?";List seatlds = new LinkedList();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = ds.getConnection(); //1。建立Connection
ps = con.prepareStatement(sql); //2。創建preparedStatement
ps.setlnt(1, performanceld); //3。設置ps的參數
ps.setlnt(2, seatType);
rs = ps.executeQuery(); //4.執行查詢
while (rs.next()) { //5.解析ResultSet
int seatld = rs.getlnt(1);
seatlds.add(new Integer(seatld));
}
rs.close(); //6.關閉資源,做好善后工作。rs,ps,connection
ps.close();
}
catch (SQLException ex) {
throw new ApplicationException ("Couldn't run query [" + sql + "]", ex);
}
finally {
try {
if (con != null)
con.close(); //如果沒有連接池的話,不要輕易關。connection屬于耗費資源:)
}
catch (SQLException ex) {
// Log and ignore
}
}
return seatlds;
}
從上面看,什么是不變的。首先,咱們這個使用JDBC的方式是良好的,正確的,也是不變的,也就是workflow不變。其次,這里頭的很多操作是不變的,比如說:關閉資源,處理異常。
◆什么是變的?設置PreparedStament的參數是變化的,利用PreparedStatement做什么是變化的。
◆還有什么是變的?取得Connection可能是變化的,我們可以從ConnectionPool中取,也可以裸從Database取。
◆還有什么是變的?在主工作流之外,還可以對PreparedStament設置一些屬性。比如fetchSize等。
◆還有什么是變的?解析ResultSet是變的。但是可以抽象,都是從結果集中取得你想要的東西。
很好。經過分析,我們會自然而然的想到Template設計模式。用模板方法來描述我們的工作流。對于固定的操作,我們會把它建模為一些幫助類,利用這些類來完成固定操作,這些操作在Template方法中被調用。
對于哪些可以變的方法。我們也發現,其實它要實現的功能是一樣的。抽象起來,我們可以用一些接口來描述這些功能。比如說數據庫連接管理的功能。
設計取決于我們考慮問題的深度,以及我們對過程劃分的粒度。
以上就是怎么簡述Spring JDBC,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。