Spring數(shù)據(jù)訪問(wèn)模板化方法
在讀《Spring in Action》一書(shū),讀到Spring數(shù)據(jù)訪問(wèn)模板化的內(nèi)容時(shí),書(shū)中以乘坐飛機(jī)拖運(yùn)行李為例,介紹了模板方法這一設(shè)計(jì)模式。
在乘坐飛機(jī)需要拖運(yùn)行李時(shí),我們需要需要進(jìn)行行李登記。然后,將行李交給工作人員,工作人員會(huì)對(duì)行李進(jìn)行稱重,安全掃描檢查,然后通過(guò)傳送帶將行李傳送到擺渡車(chē)。擺渡車(chē)載上行李,將行李拉到飛機(jī)。到達(dá)目的地后,擺渡車(chē)會(huì)將行李從飛機(jī)上拉到取行李處,然后乘客取走自己的行李。
查看整個(gè)過(guò)程,這個(gè)過(guò)程對(duì)于所有乘客基本都是相同的。對(duì)不同乘客不一樣的地方,是登記行李時(shí)需要各個(gè)乘客參與,稱重后繳費(fèi)時(shí)需要乘客參與,到達(dá)目的地后取走行李時(shí)需要乘客參與。除此之外,整個(gè)過(guò)程無(wú)需乘客參與,是不變的部分。
把上述場(chǎng)景抽象一下,就是模板方法這一設(shè)計(jì)模式。模板方法設(shè)計(jì)模式定義過(guò)程的架構(gòu)。整個(gè)過(guò)程中不變的部分在父類中定義,過(guò)程中需要改變的部分,交由各個(gè)子類來(lái)實(shí)現(xiàn)。這樣,對(duì)于具體業(yè)務(wù)邏輯來(lái)說(shuō),實(shí)現(xiàn)整個(gè)過(guò)程,只需要開(kāi)發(fā)需要變化的部分,即各個(gè)子類的邏輯即可,而不用寫(xiě)大量的固定不變的代碼。
在Spring訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),同樣適用模板方法。

我們使用JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)時(shí),大致的處理過(guò)程為,打開(kāi)一個(gè)連接,開(kāi)始事務(wù),執(zhí)行SQL,獲取返回的數(shù)據(jù),提交事務(wù),關(guān)閉資源,異常處理等。在訪問(wèn)各個(gè)數(shù)據(jù)時(shí),打開(kāi)連接,開(kāi)始事務(wù),提交事務(wù),關(guān)閉資源,異常處理等過(guò)程都是不變的,沒(méi)有必要在每次訪問(wèn)數(shù)據(jù)時(shí)都把上述邏輯寫(xiě)一遍。每次訪問(wèn)數(shù)據(jù)時(shí),我們應(yīng)該專注于執(zhí)行的SQL以及獲取返回的數(shù)據(jù)。所以,可以使用模板方法這一設(shè)計(jì)模式,來(lái)優(yōu)化這塊的代碼結(jié)構(gòu)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Java中遍歷Map的多種方法示例及優(yōu)缺點(diǎn)總結(jié)
在java中遍歷Map有不少的方法,下面這篇文章主要給大家介紹了關(guān)于Java中遍歷Map的多種方法,以及各種方法的優(yōu)缺點(diǎn)總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
Java使用Swing實(shí)現(xiàn)一個(gè)模擬電腦計(jì)算器
Java Swing 是一個(gè)用于創(chuàng)建 Java GUI(圖形用戶界面)的框架,它提供了一系列的 GUI 組件和工具,可以用于創(chuàng)建桌面應(yīng)用程序,包括按鈕、文本框、標(biāo)簽、表格等等,本文給大家介紹了Java使用Swing實(shí)現(xiàn)一個(gè)模擬計(jì)算器,感興趣的同學(xué)可以自己動(dòng)手嘗試一下2024-05-05
JAVA中的延遲隊(duì)列DelayQueue應(yīng)用解析
這篇文章主要介紹了JAVA中的延遲隊(duì)列DelayQueue應(yīng)用解析,DelayQueue是一個(gè)根據(jù)元素的到期時(shí)間來(lái)排序的隊(duì)列,而并非是一般的隊(duì)列那樣先進(jìn)先出,最快過(guò)期的元素排在隊(duì)首,越晚到期的元素排得越后,需要的朋友可以參考下2023-12-12
Ubuntu 使用Jni開(kāi)發(fā)實(shí)例詳解
這篇文章主要介紹了Ubuntu 使用Jni開(kāi)發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
如何基于java隨機(jī)獲取不重復(fù)數(shù)值
這篇文章主要介紹了如何基于java隨機(jī)獲取不重復(fù)數(shù)值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
java之多線程搶火車(chē)票的實(shí)現(xiàn)示例
生活中有很多多線程的案例,購(gòu)票就是一個(gè)很常見(jiàn)的問(wèn)題,本文主要介紹了java之多線程搶火車(chē)票的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
Mybatis一對(duì)多與多對(duì)一查詢處理詳解
這篇文章主要給大家介紹了關(guān)于Mybatis一對(duì)多與多對(duì)一查詢處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

