iBATIS的工作原理是什么

本篇內(nèi)容主要講解“iBATIS的工作原理是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“iBATIS的工作原理是什么”吧!

成都創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站制作與策劃設(shè)計(jì),開(kāi)封網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:開(kāi)封等地區(qū)。開(kāi)封做網(wǎng)站價(jià)格咨詢:18980820575

談到iBATIS工作原理問(wèn)題尤其要注意的是,有了iBATIS,你就再不需要直接編寫JDBC代碼或ADO.NET代碼了。JDBC和ADO.NET的確非常強(qiáng)大,但使用起來(lái)總不免覺(jué)得太過(guò)繁瑣。代碼清單2-2給出了一個(gè)使用JDBC的例子。

代碼清單2-2  使用JDBC的代碼示例

iBATIS的工作原理是什么

從這個(gè)例子中很容易看出,使用JDBC API編寫代碼需要許多額外的工作。盡管如此,每一行代碼又都是必不可少的,所以要減少代碼量還真不是一件容易的事情。最多也只不過(guò)能將其中的一些代碼挪到某個(gè)實(shí)用方法(utility method)中,最明顯的就是那些關(guān)閉資源(如PreparedStatement和ResultSet)的代碼。

對(duì)于iBATIS工作原理其實(shí),如果使用iBATIS,iBATIS在后臺(tái)也是運(yùn)行這些相同的JDBC代碼。iBATIS會(huì)獲取數(shù)據(jù)庫(kù)連接,設(shè)置SQL語(yǔ)句的參數(shù),執(zhí)行SQL語(yǔ)句,獲取執(zhí)行結(jié)果,并在***關(guān)閉所有的資源。然而,你需要自己親自編寫的代碼量卻大大地減少了。代碼清單2-3給出了使用iBATIS運(yùn)行相同的SQL語(yǔ)句時(shí)你需要編寫的代碼。

代碼清單2-3  iBATIS顯然比JDBC要精簡(jiǎn)得多

iBATIS的工作原理是什么

根本無(wú)須比較,iBATIS代碼明顯更加簡(jiǎn)潔,更容易閱讀,因此也更容易維護(hù)。本章稍后會(huì)討論更多關(guān)于使用iBATIS的好處。但是現(xiàn)在,你最關(guān)心的可能是如何用Java代碼運(yùn)行以上的“SQL語(yǔ)句”。其實(shí)就像你在之前的示例中已經(jīng)看到的,運(yùn)行它僅僅需要一行簡(jiǎn)單代碼:

Employee emp = (Employee) sqlMap.queryForObject("getEmployee",new Integer(5));

沒(méi)什么好多說(shuō)的。這行代碼會(huì)執(zhí)行相應(yīng)的SQL語(yǔ)句,設(shè)置其參數(shù)并返回一個(gè)真實(shí)的Java對(duì)象作為結(jié)果。SQL語(yǔ)句被“干干凈凈”地封裝在Java代碼之外的一個(gè)XML文件中。iBATIS負(fù)責(zé)管理幕后的所有資源,其運(yùn)行的實(shí)際效果與我們之前所見(jiàn)的代碼清單2-2所示的JDBC的例子是完全一樣的。

這就引起一個(gè)問(wèn)題,iBATIS對(duì)所有的系統(tǒng)來(lái)說(shuō)都以一樣的方式工作嗎?或者它僅僅是適用于某一類特定的應(yīng)用?以下幾節(jié)我們將回答這個(gè)問(wèn)題,首先從iBATIS是多么的適合于小型應(yīng)用說(shuō)起。

2.1.iBATIS工作原理之于小型、簡(jiǎn)單系統(tǒng)

小型應(yīng)用通常只涉及一個(gè)數(shù)據(jù)庫(kù),只有一些相當(dāng)簡(jiǎn)單的用戶接口和領(lǐng)域模型。它的業(yè)務(wù)邏輯層非常簡(jiǎn)單,有時(shí)對(duì)一些簡(jiǎn)單的只涉及增查改刪(CRUD:Create, Read, Update, Delete)操作的應(yīng)用來(lái)說(shuō)甚至根本就不存在業(yè)務(wù)邏輯。iBATIS之所以非常適合于小型應(yīng)用,有3個(gè)原因。

***,iBATIS自己就很小并且簡(jiǎn)單。它不需要服務(wù)器或者其他任何類型的中間件。不需要任何額外的基礎(chǔ)設(shè)施(infrastructure)。iBATIS也沒(méi)有任何第三方依賴。iBATIS的最簡(jiǎn)安裝只需要2個(gè)JAR文件,總計(jì)不過(guò)375KB。除了需要配置一下你的SQL映射文件外,iBATIS不需要進(jìn)行任何安裝,因此只需要幾分鐘時(shí)間你就可以擁有一個(gè)可工作的持久層了。

第二,iBATIS不會(huì)對(duì)現(xiàn)存應(yīng)用的設(shè)計(jì)或者數(shù)據(jù)庫(kù)結(jié)構(gòu)強(qiáng)加任何影響。因此,如果你有一個(gè)小型系統(tǒng),且已經(jīng)部分實(shí)現(xiàn)或者甚至已經(jīng)發(fā)布了,則你仍然可以重構(gòu)你的持久層以使用iBATIS,這非常簡(jiǎn)單。因?yàn)閕BATIS很簡(jiǎn)單,所以它根本不會(huì)使得應(yīng)用的架構(gòu)過(guò)分復(fù)雜。而如果使用對(duì)象/關(guān)系映射工具或者代碼生成工具,因?yàn)樗鼈兌际孪染蛯?duì)應(yīng)用以及數(shù)據(jù)庫(kù)的設(shè)計(jì)做了某些假設(shè),因此它們不可能對(duì)應(yīng)用的架構(gòu)毫無(wú)影響。

***,只要你有過(guò)軟件開(kāi)發(fā)的經(jīng)驗(yàn),相信你就不會(huì)懷疑,任何一個(gè)小軟件都幾乎不可避免地有一天會(huì)成長(zhǎng)為一個(gè)大軟件。所有成功的軟件都有進(jìn)一步成長(zhǎng)的趨勢(shì)。這是一件好事,而我們接下來(lái)想說(shuō)的就是,iBATIS同樣非常適合于大型系統(tǒng),它甚至可以擴(kuò)展以滿足企業(yè)級(jí)應(yīng)用的需要。

2.2 iBATIS工作原理之于大型、企業(yè)級(jí)系統(tǒng)

iBATIS就是為企業(yè)級(jí)應(yīng)用而設(shè)計(jì)的。最重要的是,iBATIS在這個(gè)領(lǐng)域比之其他解決方案有著大量的優(yōu)點(diǎn)。iBATIS最初的創(chuàng)建者只有從大型應(yīng)用到企業(yè)級(jí)應(yīng)用系統(tǒng)的開(kāi)發(fā)經(jīng)驗(yàn)。這一類系統(tǒng)通常都涉及不止一個(gè)數(shù)據(jù)庫(kù),且所有這些數(shù)據(jù)庫(kù)都是不可控的。在***章中我們討論了各種類型的數(shù)據(jù)庫(kù),包括企業(yè)級(jí)數(shù)據(jù)庫(kù)、私有數(shù)據(jù)庫(kù)和遺留數(shù)據(jù)庫(kù)。作者創(chuàng)建iBATIS框架一個(gè)很重要的原因就是針對(duì)這樣的數(shù)據(jù)庫(kù)。因此,iBATIS擁有許多使其非常適合于企業(yè)應(yīng)用環(huán)境的特點(diǎn)。

其實(shí)iBATIS適用于大型系統(tǒng)中的***個(gè)原因我們已經(jīng)說(shuō)過(guò)了,不過(guò)這個(gè)原因的確很重要,所以我們還是想再?gòu)?qiáng)調(diào)一下:iBATIS沒(méi)有對(duì)你的數(shù)據(jù)庫(kù)模型和對(duì)象模型的設(shè)計(jì)做任何假設(shè)。不論你的應(yīng)用中這兩個(gè)模型之間是多么不匹配,iBATIS都能適用。更進(jìn)一步,iBATIS沒(méi)有對(duì)你的企業(yè)級(jí)應(yīng)用的架構(gòu)做出任何假設(shè)。不論你對(duì)數(shù)據(jù)庫(kù)是根據(jù)業(yè)務(wù)功能縱向劃分,還是按照技術(shù)橫向劃分,iBATIS都允許你高效地處理數(shù)據(jù)并將它們整合到你的面向?qū)ο蟮膽?yīng)用中去。

第二點(diǎn),iBATIS的某些特性使得它能夠非常高效地處理大型數(shù)據(jù)集。iBATIS支持的行處理器(row handler)使得它能夠批處理超大型記錄集,一次一條記錄。iBATIS也支持只獲取某個(gè)范圍內(nèi)的結(jié)果,這就使得你可以只獲取那些你當(dāng)前亟需的數(shù)據(jù)。例如,假設(shè)你獲取了10,000條記錄,而你其實(shí)只需要其中的第500至600條,那你就可以簡(jiǎn)單的僅獲取這些記錄。iBATIS支持驅(qū)動(dòng)提示使得執(zhí)行這樣的操作非常高效。

***一點(diǎn),iBATIS允許你用多種方式建立從對(duì)象到數(shù)據(jù)庫(kù)的映射關(guān)系。一個(gè)企業(yè)級(jí)系統(tǒng)只以一種模式工作的情況是非常少見(jiàn)的。許多企業(yè)級(jí)系統(tǒng)需要在白天執(zhí)行事務(wù)性的工作,而在晚上執(zhí)行批處理工作。iBATIS允許你將同一個(gè)類以多種方式映射,以保證每一種工作都能以***效的方式執(zhí)行。iBATIS同樣支持多種數(shù)據(jù)獲取策略。例如,你可以選擇對(duì)某些數(shù)據(jù)進(jìn)行懶加載,也可以將一個(gè)復(fù)雜的對(duì)象圖只用一條聯(lián)合查詢SQL語(yǔ)句就同時(shí)加載完畢,從而避免嚴(yán)重的性能問(wèn)題。

以上所說(shuō)的這些似乎好像在自我推銷了。那么,既然我們已經(jīng)進(jìn)入了這種狀態(tài),為何不繼續(xù)深入研究一下你需要使用iBATIS的理由呢?我們會(huì)在2.3節(jié)做這件事情。并且為了公平起見(jiàn),在2.4節(jié)中,我們還會(huì)討論一些你不應(yīng)該使用iBATIS的情況。

到此,相信大家對(duì)“iBATIS的工作原理是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁(yè)名稱:iBATIS的工作原理是什么
當(dāng)前網(wǎng)址:http://muchs.cn/article20/gdisco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、企業(yè)建站、定制開(kāi)發(fā)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司