精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iBATIS DAO框架淺析

開發(fā) 后端
iBATIS DAO框架是什么概念?iBATIS DAO的常用字段又是哪些呢?本文將會(huì)給你一一介紹。

iBATIS DAO框架的書寫方便,本文采用如下簡寫約定:

◆Transaction:Tx

◆Manager:Mgr

◆Context:Ctx

◆Interface:Iface

iBATIS DAO框架如圖:

iBATIS DAO框架圖 

iBATIS DAO的核心在于DaoManager,DaoManager的創(chuàng)建代碼如下:

  1. Reader reader = Resources.getResourceAsReader("dao.xml");  
  2. DaoManager daoMngr = DaoManagerBuilder.buildDaoManager(reader); 

DaoManager是接口,查看DaoManagerBuilder源代碼可發(fā)現(xiàn),其buildDaoManager方法返回的是一個(gè)StandardDaoManager實(shí)例。buildDaoManager方法調(diào)用了XmlDaoManagerBuilder類的buildDaoManager方法,該方法完成如下工作:

1.創(chuàng)建一個(gè)StandardDaoManager實(shí)例stdDaoMgr;

2.創(chuàng)建一個(gè)用于全局收集各種property(來自<properties>元素指向的資源文件或來自當(dāng)前dao.xml中的各級(jí)<property>元素)的Properties對(duì)象;

3.解析dao.xml文件(建議閱讀本文時(shí)參考一份dao.xml文件,如JGameStore應(yīng)用中給出的dao.xml)中的<properties>元素,將相應(yīng)property加入;

4.解析dao.xml文件中的<context>元素,得到一個(gè)DaoContext實(shí)例daoCtx(4.1);并將調(diào)用stdDaoMgr.addContext方法將daoCtx添加到stdDaoMgr中(4.2):

4.1 解析dao.xml文件的<context>元素得到daoCtx的過程為:

實(shí)例化一個(gè)DaoContext對(duì)象daoCtx;

將其daoManager字段設(shè)為我們的stdDaoMgr;

如<context>有id屬性,則將daoCtx的id字段取為此屬性的值;

解析<context>的子元素:

4.1.1解析<txMgr>子元素,得到DaoTxMgr接口實(shí)例txMgr,設(shè)為daoCtx的相應(yīng)字段,解析過程為:

根據(jù)<txMgr>子元素的type屬性,實(shí)例化一個(gè)相應(yīng)的DaoTxMgr實(shí)例txMgr;

解析<txMgr>的<property>子元素,將所得property添加入properties;

根據(jù)properties對(duì)txMgr進(jìn)行配置(即調(diào)用txMgr.configure方法);

4.1.2解析<dao>子元素,得到一個(gè)DaoImpl類實(shí)例daoImpl,然后將其加入daoCtx;

4.1.2.1解析過程為:

4.1.2.1.1實(shí)例化一個(gè)DaoImpl類實(shí)例daoImpl;

4.1.2.1.2將daoImpl的daoMgr字段設(shè)為我們的stdDaoMgr;

4.1.2.1.3將daoImpl的daoCtx字段設(shè)為我們的daoCtx;

4.1.2.1.4將daoImpl的daoIface字段設(shè)為<dao>的iface屬性值對(duì)應(yīng)的class;

4.1.2.1.5將daoImpl的daoImplementation字段設(shè)為<dao>的implementation屬性值對(duì)應(yīng)的class;

4.1.2.1.6根據(jù)implementation屬性實(shí)例化一個(gè)DAO實(shí)現(xiàn)類,設(shè)為daoInstance字段值,注意,該實(shí)例一定是一個(gè)Dao接口實(shí)例,因?yàn)槿魏我粋€(gè)都繼承自DaoTemplate,而DaoTemplate實(shí)現(xiàn)了Dao接口;

4.1.2.1.7創(chuàng)建一個(gè)當(dāng)前DAO實(shí)現(xiàn)類的代理,設(shè)為daoImpl的proxy字段值,該代理在啟用顯式事務(wù)時(shí)會(huì)在調(diào)用委托方法前調(diào)用daoCtx.startTx方法;在使用隱式事務(wù)時(shí)則在調(diào)用委托方法的前后分別調(diào)用daoCtx.startTx方法和commitTx方法(在finally塊中還調(diào)用daoCtx.endTx方法)。

4.1.2.2將daoImpl加入daoCtx的過程為:以當(dāng)前daoImpl填充一張從daoIface到DaoImpl實(shí)例的表;

4.2 調(diào)用stdDaoMgr.addContext方法將daoCtx添加到stdDaoMgr中的過程為:

4.2.1以當(dāng)前daoCtx填充一張由id到DaoCtx實(shí)例的表;

4.2.2遍歷daoCtx中存放的所有daoImpl,填充一張從daoIface到daoCtx的表和一張從Dao接口實(shí)例(即daoImpl中的proxy和daoInstance)到daoCtx的表;

5.客戶以某DaoIface調(diào)用DaoMgr.getDao方法得到一個(gè)DaoIface實(shí)現(xiàn)類實(shí)例xxxYyyDao的過程為:

stdDaoMgr查找其從daoIface到daoCtx的表,得到當(dāng)前daoIface所在daoCtx,然后調(diào)用daoCtx.getDao方法:

daoCtx查找其從daoIface到DaoImpl實(shí)例的表,得到daoImpl,返回其proxy字段;

6.隱式事務(wù):

隱式事務(wù)中,客戶每調(diào)用一個(gè)xxxYyyDao中方法時(shí),都是一次完整的事務(wù),因?yàn)閤xxYyyDao是調(diào)用DaoMgr.getDao方法得到的,而根據(jù)5,其實(shí)xxxYyyDao是一個(gè)代理,又根據(jù)4.1.2.1.7,該代理會(huì)“在調(diào)用其委托方法前后分別調(diào)用daoCtx.startTx方法和commitTx方法(在finally塊中還調(diào)用daoCtx.endTx方法)”。

6.1 daoCtx.startTx方法調(diào)用其txMgr字段的txMgr.startTx方法,該方法返回一個(gè)DaoTx實(shí)例daoTx,daoCtx將它放入一個(gè)線程變量中;

6.2 DaoIface實(shí)現(xiàn)類中,由于其一定繼承自某個(gè)DaoTemplate,以調(diào)用其中的數(shù)據(jù)庫訪問方法,而這些數(shù)據(jù)庫訪問方法都會(huì)以自己作為參數(shù)調(diào)用daoMgr的getTx方法;該方法查找4.2.2中提到的從Dao接口實(shí)例到daoCtx的表,得到一個(gè)daoCtx,然后調(diào)用daoCtx.getTx;daoCtx.getTx將存儲(chǔ)在線程變量中的daoTx實(shí)例返回;

6.3 daoTx實(shí)例包含數(shù)據(jù)庫操作所需的關(guān)鍵元素,例如對(duì)于SqlMapDaoTx,其中就包含一個(gè)SqlMapClient實(shí)例,SqlMapDaoTemplate中的數(shù)據(jù)庫訪問方法(如insert,queryForList等)都是先調(diào)用daoMgr.getTx,得到daoTx實(shí)例,將其強(qiáng)制轉(zhuǎn)化為SqlMapDaoTx實(shí)例,然后調(diào)用其getSqlMap方法得到SqlMapClient實(shí)例,再調(diào)用SqlMapClient實(shí)例中的相應(yīng)方法;又如對(duì)于JDBC的情況,對(duì)應(yīng)DaoTx為ConnectionDaoTx,該類包含一個(gè),每次調(diào)用JdbcDaoTemplate方法的getConnection方法時(shí),該方法都先調(diào)用daoMgr.getTx,得到daoTx實(shí)例,將其強(qiáng)制轉(zhuǎn)化為ConnectionDaoTx實(shí)例,然后調(diào)用其getConnection方法得到其中的Connection實(shí)例,然后調(diào)用其中的相應(yīng)方法。

6.4 daoCtx.commitTx方法調(diào)用其txMgr字段的txMgr.commitTx(daoTx)方法完成事務(wù)的提交。

6.5 daoCtx.endTx方法調(diào)用其txMgr字段的txMgr.endTx(daoTx)方法結(jié)束事務(wù)。

7.顯式事務(wù):

顯式事務(wù)通常包括三個(gè)步驟:首先,調(diào)用daoMgr.startTx,然后調(diào)用xxxYyyDao中的方法,***調(diào)用daoMgr.commitTx。

7.1 daoMgr.startTx的工作非常簡單,只是設(shè)置stdDaoMgr中標(biāo)記顯式事務(wù)的字段;

7.2 調(diào)用xxxYyyDao中的方法時(shí),由于代理,將先調(diào)用daoCtx.startTx,此過程同6.1;

7.3 調(diào)用daoMgr.commitTx時(shí),該方法最終調(diào)用的也是daoCtx.commitTx,請(qǐng)參考6.4
 
下面以一個(gè)問題的實(shí)現(xiàn)來完成本文的總結(jié)工作:如果要由我來實(shí)現(xiàn)iBATIS的DAO框架對(duì)于Hibernate的支持,我們應(yīng)該如何實(shí)現(xiàn)?

Hibernate的核心在于Session,所有的數(shù)據(jù)庫操作都可調(diào)用Session上的相應(yīng)方法完成,所有考慮用于支持Hibernate的DaoTx實(shí)現(xiàn)應(yīng)該是對(duì)Session的一個(gè)包裝,該實(shí)現(xiàn)中有一個(gè)返回當(dāng)前Session的getSession方法(當(dāng)然也包括提交和回滾方法)。同樣的,DaoTxMgr實(shí)現(xiàn)類的configure方法負(fù)責(zé)完成某個(gè)Session實(shí)例(session)的配置,startTx方法負(fù)責(zé)返回一個(gè)包裝了當(dāng)前session實(shí)例的DaoTx實(shí)例,commitTx方法將傳入的daoTx實(shí)例強(qiáng)制轉(zhuǎn)化后調(diào)用daoTx上的commit方法,rollbackTx方法將傳入的daoTx實(shí)例強(qiáng)制轉(zhuǎn)化后調(diào)用daoTx上的rollback方法。而HibernateDaoTemplate類的關(guān)鍵就在于其protected的getSession方法,該方法先調(diào)用daoMgr.getTx得到當(dāng)前daoTx實(shí)例,強(qiáng)制轉(zhuǎn)化后調(diào)用daoTx上的getSession方法即可。

查詢iBATIS的源代碼,發(fā)現(xiàn)與以上思路完全相同。

iBATIS DAO框架就向你介紹到這里,希望對(duì)你了解iBATIS DAO框架有所幫助。

【編輯推薦】

  1. iBATIS for Eclipse設(shè)置淺析
  2. iBATIS事務(wù)處理淺析
  3. iBatis和Hibernate的較量淺析
  4. iBATIS動(dòng)態(tài)映射淺析
  5. iBATIS的自動(dòng)代碼生成工具Abator在Eclipse的應(yīng)用
責(zé)任編輯:仲衡 來源: 中國IT實(shí)驗(yàn)室
相關(guān)推薦

2009-07-20 18:00:16

iBATIS DAO事

2009-07-16 17:01:32

ibatis dao

2009-07-21 11:17:46

iBATISDAO的配置

2009-07-20 14:56:18

iBATIS.NET動(dòng)態(tài)選擇DAO

2009-07-22 16:43:22

iBATIS框架iBATIS優(yōu)化

2009-07-21 11:12:00

iBATIS配置

2009-07-16 16:27:33

ibatis DAO

2009-07-21 13:08:08

iBATIS DAO

2009-07-15 17:19:31

iBATIS Ecli

2009-07-22 10:03:11

iBATIS Resu

2009-07-17 10:32:45

iBATIS MapB

2009-07-22 10:42:59

iBATIS Cach

2009-07-16 10:23:30

iBATIS工作原理

2009-07-15 17:58:07

iBATIS 動(dòng)態(tài)映射

2009-07-22 13:32:43

iBATIS DAO

2009-07-22 15:21:00

iBATIS SQLM

2009-07-16 13:08:09

iBATIS快速創(chuàng)建應(yīng)

2009-07-22 09:44:05

iBATIS Para

2009-07-15 16:42:03

iBATIS讀寫CLO

2009-07-17 17:05:44

iBATIS緩存cacheModel
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费日本视频一区| 豆花视频一区二区| 最新国产精品久久精品| 97超级碰碰| 国内免费精品视频| 成人激情开心网| 日韩三级视频在线观看| 六月丁香婷婷激情| av在线播放国产| 26uuuu精品一区二区| 国产日本欧美在线观看| 国产精品suv一区二区69| 狠狠综合久久av一区二区蜜桃| 欧美精品视频www在线观看| 久艹视频在线免费观看| 日韩精品毛片| 91色|porny| 国产日韩亚洲欧美| av大全在线观看| 欧美暴力喷水在线| 国产精品xxx在线观看| 亚洲精选视频免费看| 日本精品一区二区三区高清 久久| 国产尤物视频在线观看| 久久www成人_看片免费不卡| 欧美刺激性大交免费视频| 国产精品天天干| 国产suv精品一区| 欧美精品电影在线播放| 波多野结衣作品集| 亚洲一级少妇| 亚洲国产精品尤物yw在线观看| 中文字幕av日韩精品| 激情在线视频| 本田岬高潮一区二区三区| 国产日韩欧美综合| 成人黄色免费网| 久久中文欧美| 欧美在线视频免费播放| 久久狠狠高潮亚洲精品| 激情久久久久| 色综合天天狠天天透天天伊人| 亚洲av无一区二区三区| 精品视频日韩| 在线国产精品视频| 久久久视频6r| 国产欧美日韩影院| 亚洲欧美国产va在线影院| 中文字幕免费在线播放| 成人午夜网址| 亚洲第一中文字幕| 中文字幕乱码在线| 色天天色综合| 亚洲码在线观看| 大黑人交xxx极品hd| 牲欧美videos精品| 亚洲欧美日韩网| 亚洲激情视频小说| 手机免费观看av| 成年美女黄网站色大片不卡| 午夜精品久久久久| 91视频最新入口| 亚洲欧洲自拍| 色播五月激情综合网| 日本a在线免费观看| av资源在线| 欧美性69xxxx肥| 国产精品乱码久久久久| 精品123区| 欧美日韩精品系列| 中文字幕一区二区在线观看视频| 一区二区三区无毛| 日韩免费高清av| 污污免费在线观看| 偷拍自拍一区| 在线视频欧美日韩| 亚洲综合久久av一区二区三区| 五月天激情综合网| 久久久亚洲成人| 国产精品男女视频| 免费人成在线不卡| 亚洲xxxx在线| 日韩美女一级视频| 国产精品的网站| 日产精品久久久久久久蜜臀| 黄视频免费在线看| 欧美主播一区二区三区| 国内av一区二区| 国产suv精品一区| 亚洲精品一区二区三区区别| 91视频91自| 超碰97免费观看| 国产在线88av| 777午夜精品免费视频| 亚洲成年人在线观看| 日本一区福利在线| xxxxx成人.com| 国产又爽又黄的视频| 久久激情五月激情| 精品国产91亚洲一区二区三区www| 国产精品天堂| 亚洲一区中文在线| 精品999在线| 激情小说亚洲图片| 日韩在线视频播放| 天天爽夜夜爽夜夜爽精品| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品一国产精品最新章节| av电影在线观看| 亚洲国产精品久久一线不卡| 中文字幕成人在线视频| 日韩av资源网| 日韩有码在线电影| 午夜精品一区二| 成人性生交大片免费看中文| 一区二区日本伦理| 亚洲综合电影| 精品久久一二三区| 懂色av粉嫩av蜜臀av一区二区三区| 国产精品综合色区在线观看| 99热在线国产| 精品国产丝袜高跟鞋| 色婷婷国产精品综合在线观看| 香蕉久久久久久av成人| 99成人在线视频| 国产精品久在线观看| 午夜激情在线视频| 亚洲一区二区三区四区的| 911福利视频| 日韩在线精品| 国产精品av网站| 亚洲日本香蕉视频| 午夜精品成人在线视频| 91传媒理伦片在线观看| 综合激情婷婷| 成人性生交大片免费看小说| 99reav在线| 欧美在线视频日韩| 制服 丝袜 综合 日韩 欧美| 国产精品入口| 精品伦精品一区二区三区视频| 婷婷在线播放| 日韩免费视频一区| 国产真实乱偷精品视频| 国产成人av影院| 国产一级片91| 日本一区二区三区播放| 欧美成人午夜激情在线| 国产免费的av| 伊人婷婷欧美激情| 日本人dh亚洲人ⅹxx| 亚洲女同一区| 国产精品二区在线| 麻豆av在线免费观看| 欧美变态口味重另类| 青青草成人免费| 国产成人精品网址| 给我免费播放片在线观看| 成人在线tv视频| 91精品国产高清| 日本啊v在线| 欧美在线影院一区二区| jizzjizzjizz国产| 国产一区在线精品| 国产妇女馒头高清泬20p多| 国产精品玖玖玖在线资源| 97精品国产97久久久久久免费| 天天av综合网| 欧美中文字幕一区二区三区| 97精品在线播放| 国产老肥熟一区二区三区| 青青在线视频免费观看| 激情小说一区| 国产精品久久久久久久久久久久久久| 在线观看a视频| 欧美一区二区三区四区高清| 国产在线视频99| 久久一区二区三区四区| 欧美特级aaa| 欧美成熟视频| 蜜桃91精品入口| 成人在线免费电影网站| 欧美精品一本久久男人的天堂| 色呦呦中文字幕| 在线观看日韩av先锋影音电影院| av最新在线观看| 成人av电影免费在线播放| 国产日韩成人内射视频| 在线成人超碰| 久久国产精品一区二区三区| 电影亚洲一区| 久久久久久国产三级电影| 久热av在线| 日韩一区二区视频在线观看| 国产高潮久久久| 中文字幕一区二区三区四区| 午夜久久久久久久| 精品在线一区二区三区| www.中文字幕在线| 亚洲激情久久| 色就是色欧美| 久久人人爽人人爽人人片av不| 国产精品亚洲自拍| 小视频免费在线观看| 久久精品小视频| 毛片在线能看| 日韩美一区二区三区| 久久久久久久久久一级| 亚洲亚洲人成综合网络| 顶级黑人搡bbw搡bbbb搡| 99久久国产免费看| 永久看看免费大片| 奇米精品一区二区三区在线观看一| 精品视频在线观看一区二区| 日韩1区2区| 日本一区二区三区精品视频| jazzjazz国产精品麻豆| 91色中文字幕| 欧美日韩国产网站| 秋霞午夜一区二区| 国产在线xxx| 精品国产一区二区三区久久狼黑人| 亚洲 另类 春色 国产| 欧美久久久影院| 波多野结衣一区二区三区在线| 亚洲高清免费观看高清完整版在线观看| 日本成人免费在线观看| 国产天堂亚洲国产碰碰| 国产制服丝袜在线| 97精品久久久午夜一区二区三区| 免费黄视频在线观看| 国产在线日韩欧美| wwwwwxxxx日本| 免播放器亚洲一区| 三级a在线观看| 免费中文字幕日韩欧美| av免费观看网| 亚洲人成久久| 青青青在线视频播放| 亚洲午夜极品| 国产乱子伦精品无码专区| 欧美精品一线| a级片一区二区| 一级欧洲+日本+国产 | 蜜桃网站在线观看| 欧美3p在线观看| 亚洲草草视频| 日韩欧美一区免费| 亚洲一区二区三区午夜| 欧美r级电影| 一区二区三区一级片| 欧美疯狂party性派对| 国产日本欧美在线| 亚洲一区色图| 又大又硬又爽免费视频| 在线看片成人| 日韩精品一区二区三区久久| 久久福利一区| 五月婷婷狠狠操| 美女视频黄a大片欧美| www.欧美激情.com| 高清久久久久久| 日韩少妇一区二区| 91免费国产在线观看| 国产精品一二三区在线观看| 国产欧美综合在线| 国产精品久久国产精麻豆96堂| 一色屋精品亚洲香蕉网站| 澳门黄色一级片| 亚洲aaa精品| av毛片在线免费观看| 欧美日韩精品专区| 成人av免费播放| 亚洲精品久久久久| 1024免费在线视频| 欧美成年人网站| 国产精品yjizz视频网| 国产999精品久久久| 日韩电影精品| 国产精品乱码一区二区三区| 一区二区美女| www亚洲国产| 在线观看一区视频| 亚洲五月天综合| 国产一二精品视频| 中文成人无字幕乱码精品区| 国产日韩高清在线| 顶臀精品视频www| 午夜激情一区二区三区| 亚洲视频在线观看免费视频| 日韩午夜电影在线观看| 视频在线不卡| 久久在线免费观看视频| 无遮挡爽大片在线观看视频 | 亚洲图色一区二区三区| 久久精品日韩精品| 99久久激情| www..com日韩| 麻豆免费看一区二区三区| 蜜臀视频在线观看| 亚洲国产激情av| 国产一级片久久| 欧美日韩五月天| 亚洲av片在线观看| 久久艹在线视频| 91精品韩国| 国产高清一区视频| 久久综合av| 成年人黄色片视频| 成人性色生活片| 国产成人免费在线观看视频| 婷婷久久综合九色综合伊人色| 一区二区日韩在线观看| 亚洲免费视频一区二区| 久久不射影院| 91麻豆国产语对白在线观看| 国产精品一区2区3区| 97超碰在线人人| 国产乱子轮精品视频| 在线免费看视频| 欧美视频不卡中文| 精品免费久久久| 久久精品国产一区二区三区| 日韩经典一区| 欧美一区二区三区在线播放| 亚洲精品123区| 欧美久久久久久久久久久| 亚洲视频一区二区在线| 伊人网中文字幕| 亚洲小视频在线| 欧美大片免费高清观看| 激情伦成人综合小说| 国内揄拍国内精品久久| 亚洲五月激情网| 亚洲日本欧美天堂| 国产一区二区在线不卡| www.亚洲成人| 国产精品麻豆成人av电影艾秋| 欧美亚洲精品日韩| 亚洲综合精品| 男生裸体视频网站| 第一福利永久视频精品| 天堂av手机版| 8x拔播拔播x8国产精品| 欧美电影在线观看免费| 99精品在线免费视频| av激情综合网| 久久久久久久久影院| 亚洲欧美日韩图片| 少妇精品视频一区二区免费看| 欧美性大战久久久久| 日韩激情在线观看| 亚洲综合欧美综合| 欧美日韩国产精品自在自线| lutube成人福利在线观看| 国产精品亚洲欧美导航| 五月综合激情| 男人添女人荫蒂国产| 午夜精品一区二区三区免费视频 | 在线观看亚洲欧美| 亚洲精品永久免费| 播放一区二区| 亚洲一区高清| 国产精品自产自拍| 国产一级片免费| 日韩精品视频免费| 免费成人直播| 亚洲一区三区在线观看| 狠狠色狠狠色综合| 国产精品a成v人在线播放| 亚洲精品视频在线播放| 福利一区二区免费视频| 日本丰满大乳奶| 不卡一区在线观看| 99久久久无码国产精品免费蜜柚| 一本色道久久88综合日韩精品| 亚洲免费资源| 国产精品久久久久9999爆乳| 久久综合999| 午夜一级黄色片| 久久五月情影视| 日韩精品a在线观看91| 色综合色综合色综合色综合| 一区二区三区欧美亚洲| 九色在线播放| 亚洲影院高清在线| 亚洲一区自拍| 亚洲xxxx3d动漫| 日韩av在线免费播放| 日韩成人一区| 欧美视频在线播放一区| 国产精品看片你懂得| 少妇精品高潮欲妇又嫩中文字幕| 国产精品jizz在线观看麻豆| 欧美一区不卡| 久久午夜福利电影| 日韩精品一区二| 福利一区视频| 逼特逼视频在线| 亚洲精品高清视频在线观看|