- iBATIS框架源碼剖析
- 任鋼
- 1398字
- 2018-12-30 14:35:58
1.3 iBATIS的組件和實(shí)現(xiàn)的功能
iBATIS框架主要包含兩類組件:SQL Map組件和DAO組件。
1.3.1 iBATIS的DAO組件
iBATIS DAO組件的主要功能是幫助開(kāi)發(fā)人員基于DAO設(shè)計(jì)模式設(shè)計(jì)和開(kāi)發(fā)Java EE應(yīng)用程序。DAO框架的主要目標(biāo)是抽象化應(yīng)用程序的數(shù)據(jù)訪問(wèn)層和持久層的表示方式和位置,使它遠(yuǎn)離應(yīng)用程序的業(yè)務(wù)邏輯。同時(shí)DAO框架允許在應(yīng)用程序中定義負(fù)責(zé)數(shù)據(jù)中心操作的接口,使用DAO可以動(dòng)態(tài)地配置應(yīng)用程序,從而使用不同的持久性機(jī)制和隱藏持久性層的實(shí)現(xiàn)細(xì)節(jié)。例如,如果應(yīng)用程序通過(guò)JDBC來(lái)獲取持久性,則DAO框架的目標(biāo)就是抽象Connection、PreparedStatement和ResultSet等類和接口的使用,并下移到持久層;如果應(yīng)用程序使用get和post來(lái)獲得和存儲(chǔ)數(shù)據(jù),則DAO框架的用途是實(shí)現(xiàn)抽象化類的使用,使它們遠(yuǎn)離應(yīng)用程序的業(yè)務(wù)層。然后應(yīng)用程序可以使用DAO接口在數(shù)據(jù)上執(zhí)行操作,這樣就可以從數(shù)據(jù)庫(kù)、Web服務(wù)或其他任何數(shù)據(jù)源中獲得數(shù)據(jù)。iBATIS DAO實(shí)現(xiàn)如圖1-1所示。

圖1-1 iBATIS DAO實(shí)現(xiàn)圖
iBATIS DAO實(shí)現(xiàn)的目的如下:
① 為二次開(kāi)發(fā)人員實(shí)現(xiàn)核心Java EE設(shè)計(jì)模式的DAO模式提供了一個(gè)基礎(chǔ)平臺(tái)。
② 抽象出數(shù)據(jù)訪問(wèn)方式,隱藏了實(shí)現(xiàn)細(xì)節(jié);
③ 封裝了多種ORM模型,屏蔽了持久層。使得iBATIS DAO支持iBATIS SQL Map、Hibernate、Apache Ojb、Toplink、JDBC和JTA。
④ 由于對(duì)數(shù)據(jù)庫(kù)的操作都是由DAO代理實(shí)現(xiàn)的,這樣可以使系統(tǒng)更具可維護(hù)性。
⑤ 當(dāng)進(jìn)行多種ORM模型組合時(shí),不用修改代碼。
⑥ 增強(qiáng)了緩存處理,提高了安全性。
1.3.2 iBATIS SQL Map組件
iBATIS SQL Map組件是iBATIS Database Layer框架的重要組成部分,是整個(gè)iBATIS Database Layer的核心所在。SQL Map能夠大大減少訪問(wèn)數(shù)據(jù)庫(kù)的代碼。iBATIS SQL Map使用簡(jiǎn)單的XML配置文件將JavaBean、XML、Map映射成SQL語(yǔ)句,通過(guò)SQL語(yǔ)句的執(zhí)行而獲得Java Bean、XML、Map、List等對(duì)象。iBATIS SQL Map實(shí)現(xiàn)如圖1-2所示。

圖1-2 iBATIS SQL Map實(shí)現(xiàn)圖
iBATIS SQL Map提供了一個(gè)簡(jiǎn)潔的框架。輸入?yún)?shù)使用簡(jiǎn)單的XML配置文件映射成JDBC的查詢對(duì)象(Statement)——用來(lái)綁定要執(zhí)行的操作的對(duì)象,然后生成結(jié)果。iBATIS SQL Map的實(shí)現(xiàn)的功能如下。
① 該組件基于XML配置文件,實(shí)現(xiàn)底層數(shù)據(jù)操作的SQL可配置化,可以控制最終的數(shù)據(jù)操作方式,通過(guò)SQL的優(yōu)化獲得最佳的數(shù)據(jù)庫(kù)執(zhí)行效能,在系統(tǒng)設(shè)計(jì)上具有比較大的自由空間。這在SQL自動(dòng)生成的“全自動(dòng)化”O(jiān)RM機(jī)制中是所難以實(shí)現(xiàn)的。
② SQL語(yǔ)句的輸入和輸出參數(shù)可以是基本類型的包裝類和簡(jiǎn)單類(如Integer、String等),也可以是Map、JavaBean、XML文件等,還可以直接使用應(yīng)用中更為復(fù)雜的類(例如值對(duì)象VO、數(shù)據(jù)傳輸對(duì)象DTO等)。
③ 可針對(duì)特定的數(shù)據(jù)庫(kù)操作設(shè)置特定的Java屬性/SQL字段列值映射。
④ 相對(duì)于其他ORM框架,SQL Map框架簡(jiǎn)單易學(xué),且編程代碼簡(jiǎn)練。
⑤ SQL Map所提供的架構(gòu)簡(jiǎn)潔,能夠用20%的代碼實(shí)現(xiàn)80%的JDBC的功能,也就能夠非常方便地實(shí)現(xiàn)數(shù)據(jù)持久層。
從圖1-2中看到,可以把JavaBean、Map類型,原始變量和XML數(shù)據(jù)作為傳入對(duì)象;通過(guò)配置文件載入映射文件;利用框架翻譯轉(zhuǎn)化成JDBC來(lái)訪問(wèn)數(shù)據(jù)庫(kù);執(zhí)行結(jié)果可以是JavaBean、Map類型以及原始變量和XML數(shù)據(jù)。
iBATIS幾個(gè)主要的特性如下。
① 能夠管理對(duì)象持續(xù)性。JavaBean到數(shù)據(jù)庫(kù)表的映射,以對(duì)象的方式存取數(shù)據(jù)。O/R Mapping的定義都是基于XML,具有很好的擴(kuò)展性和通用性。
② 支持多種數(shù)據(jù)輸入和輸出類型,包括Java基本類型、JavaBean、Map、XML等。
③ 支持靜態(tài)SQL語(yǔ)言、參數(shù)SQL語(yǔ)言和動(dòng)態(tài)SQL語(yǔ)言。
④ 支持新增、修改、刪除、查詢和存儲(chǔ)過(guò)程的操作。
⑤ 支持顯式事務(wù)和隱式事務(wù),支持JDBC、JTA和容器事務(wù)。
⑥ 允許用戶使用定制的SQL來(lái)提高查詢的性能,提供了多種SQL自動(dòng)策略開(kāi)關(guān)。
⑦ 提供了靈活的Cache緩沖機(jī)制,以及延遲加載、復(fù)合查詢的策略,保證一般應(yīng)用的性能不會(huì)低于相應(yīng)的數(shù)據(jù)集應(yīng)用。
⑧ 使用iBATIS框架可實(shí)現(xiàn)數(shù)據(jù)庫(kù)平臺(tái)無(wú)關(guān)性,可以隨時(shí)切換開(kāi)發(fā)及數(shù)據(jù)庫(kù)發(fā)布平臺(tái),方便移植。這些數(shù)據(jù)庫(kù)包括Oracle、MS SQL Server、MySQL等。
- AutoCAD快速自學(xué)寶典(2018中文版)
- Android從入門到精通
- BIRT 2.6 Data Analysis and Reporting
- Salesforce CRM: The Definitive Admin Handbook
- 計(jì)算機(jī)圖形圖像處理Photoshop CS6項(xiàng)目教程
- Adobe創(chuàng)意大學(xué)Photoshop CS5 產(chǎn)品專家認(rèn)證標(biāo)準(zhǔn)教材
- Spark Cookbook 中文版
- 抖音+剪映+Premiere短視頻制作從新手到高手(第2版)
- JBoss RichFaces 3.3
- Photoshop CS6數(shù)碼照片處理入門到精通
- LaTeX論文寫作教程
- 中文版3ds Max 2016基礎(chǔ)培訓(xùn)教程
- 技藝非凡Photoshop+SAI繪畫創(chuàng)作技法揭秘
- 中文版CATIA V5 技術(shù)大全
- Photoshop數(shù)字創(chuàng)意設(shè)計(jì)教程(案例微課版)