SQL Maps
Sql Maps是這個(gè)框架中最激動(dòng)人心的部分,它是整個(gè)iBATIS Database Layer的核心價(jià)值所在。通過使用Sql Maps你可以顯著的節(jié)約數(shù)據(jù)庫(kù)操作的代碼量。SQL Maps使用一個(gè)簡(jiǎn)單的XML文件來(lái)實(shí)現(xiàn)從實(shí)體到SQL statements的映射。跟其他的框架或者對(duì)象映射工具相比,SQL Maps最大的優(yōu)勢(shì)是簡(jiǎn)單。它需要學(xué)習(xí)的東西很少,在連接表或復(fù)雜查詢時(shí)也不需要復(fù)雜的scheme,使用SQL Maps,你可以自由的使用SQL語(yǔ)句。Data Access Objects (DAO)
當(dāng)我們開發(fā)靈活的DOTNET應(yīng)用時(shí),有一個(gè)好主意就是通過一個(gè)通用API層把實(shí)體操作的細(xì)節(jié)封裝起來(lái)。Data Access Objects允許你通過一個(gè)簡(jiǎn)單接口的來(lái)操作數(shù)據(jù),從而隱藏了實(shí)現(xiàn)的細(xì)節(jié)。使用DAO,你可以動(dòng)態(tài)配置你的應(yīng)用程序來(lái)訪問不同的實(shí)體存儲(chǔ)機(jī)制。如果你有一個(gè)復(fù)雜的應(yīng)用需要用到幾個(gè)不同的數(shù)據(jù)庫(kù),DAO可以讓你建立一個(gè)一致的API,讓系統(tǒng)的其他部分來(lái)調(diào)用。
Examples
NPetShop Example Application 一個(gè)在線商店。
SQL Maps (IBatisNet.DataMapper.*)
概念
SQL Map API允許程序員很簡(jiǎn)單的把DOTNET對(duì)象映射到PreparedStatement參數(shù)或者ResultMap。SQL Maps的機(jī)制很簡(jiǎn)單,提供一個(gè)框架,來(lái)實(shí)現(xiàn)用20%的代碼來(lái)實(shí)現(xiàn)80% ADO.NET的功能。How does it work?
SQL Maps提供一個(gè)簡(jiǎn)單的框架,通過XML描述來(lái)映射DOTNET實(shí)體類,MAP implementations甚至原始類型的包裝(String,Integer等)到Ado.net PreparedStatement。想法很簡(jiǎn)單,基本的步驟如下:
1) 提供一個(gè)參數(shù),無(wú)論是對(duì)象還是一個(gè)Nativel類型。參數(shù)將被用于設(shè)置sql語(yǔ)句或存儲(chǔ)過程的運(yùn)行時(shí)的值
2) 通過傳送參數(shù)和在你的xml描述中的聲明名字或者存儲(chǔ)過程來(lái)執(zhí)行映射。這一步將是魔術(shù)般的步驟。框架將會(huì)準(zhǔn)備sql聲明或者存儲(chǔ)過程,用你的參數(shù)設(shè)置運(yùn)行時(shí)數(shù)據(jù)值,執(zhí)行sql語(yǔ)句或者存儲(chǔ)過程,返回結(jié)果。
3) 在更新的時(shí)候,更新的行數(shù)將會(huì)被返回。在查詢的時(shí)候,返回的將是一個(gè)對(duì)象或者對(duì)象的集合。象參數(shù),結(jié)果對(duì)象,或者對(duì)象的集合,可以是一個(gè)plan-old對(duì)象或者native類型。
Data Access Objects
在開發(fā)健壯的 Dotnet 應(yīng)用程序時(shí),用分層的持久性實(shí)現(xiàn)的詳細(xì)說(shuō)明通常是一個(gè)好主意。Data Access Objects(DAO)允許您創(chuàng)建簡(jiǎn)單的組件,提供對(duì)數(shù)據(jù)的訪問,而無(wú)需將實(shí)現(xiàn)的詳細(xì)說(shuō)明展示給應(yīng)用程序的其余部分。使用 DAO 可以動(dòng)態(tài)地配置應(yīng)用程序,從而使用不同的持久性機(jī)制。如果您有一個(gè)涉及許多不同的數(shù)據(jù)庫(kù)和持久性方法的復(fù)雜程序,那么 DAO 可以幫助您創(chuàng)建一個(gè)用于您將使用的其他應(yīng)用程序的持久性 API。通過允許將動(dòng)態(tài)的、可插入的 DAO 組件很容易地?fù)Q入換出,可以使用 iBATIS Data Access Objects API 幫助隱藏持久性層實(shí)現(xiàn)的細(xì)節(jié),不讓其他應(yīng)用程序知道。例如,您可以使用兩個(gè)特殊的 DAO,一個(gè)使用 iBATIS SQL Maps 框架將對(duì)象持久存儲(chǔ)到數(shù)據(jù)庫(kù)中,另一個(gè)則使用NHibernate 框架。類似的一個(gè)例子將是一個(gè)為另一個(gè) DAO 提供緩存服務(wù)的 DAO。根據(jù)使用情況(例如,有限的數(shù)據(jù)庫(kù)性能與有限的內(nèi)存相對(duì)),您可以插入這個(gè)緩存 DAO,或者可以使用標(biāo)準(zhǔn)的非緩存 DAO。這些例子展示了 DAO 模式提供的一些便利;然而,DAO 提供的安全性更為重要。DAO 模式可以保護(hù)應(yīng)用程序,使之不必與特定持久性方法捆綁在一起。在當(dāng)前解決方案不適合(甚至不可用)的情況下,可以創(chuàng)建新的 DAO 實(shí)現(xiàn)來(lái)支持新的解決方案,而不必修改其他應(yīng)用層中的任何代碼。
翻譯此頁(yè)