精品欧美一区二区三区在线观看 _久久久久国色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)

国产极品国产极品| 亚洲成人tv网| 欧美午夜片在线观看| 成人黄动漫网站免费| 久久久视频6r| 99久久精品免费看国产小宝寻花 | 91精品高清| 91一区二区在线观看| 久久久999精品免费| 成人免费无码av| 人妻偷人精品一区二区三区| 91精品精品| 亚洲电影在线观看| a级片一区二区| 国产精品美女一区| 91偷拍一区二区三区精品| 色激情天天射综合网| 麻豆精品视频| 91丝袜一区二区三区| 久久动漫网址| 五月婷婷激情综合| 成人信息集中地欧美| 国产成人一区二区在线观看| 久久毛片亚洲| 国产午夜亚洲精品午夜鲁丝片| 欧美亚洲另类激情另类| 欧美 日本 国产| 成人直播视频| 一区二区三区四区五区视频在线观看| 国产精品高潮呻吟久久av野狼| 精品黑人一区二区三区观看时间| 亚洲日本免费电影| 专区另类欧美日韩| 97久久精品午夜一区二区| 成人免费视频网站入口::| 亚洲免费福利一区| 91国模大尺度私拍在线视频| 97超碰国产精品| 日批免费在线观看| 国产精品嫩草99av在线| 亚洲色图日韩av| 蜜桃免费在线视频| 欧洲不卡视频| 福利电影一区二区| 26uuu久久噜噜噜噜| 国产探花在线免费观看| 日韩在线欧美| 欧美一区二区三区四区视频| 毛片在线视频观看| 久草资源在线观看| 成人一区二区视频| 日本aⅴ大伊香蕉精品视频| 摸摸摸bbb毛毛毛片| 欧美日韩一本| 欧美日韩精品欧美日韩精品一综合| 手机在线视频你懂的| www.爱爱.com| 久久都是精品| 欧美另类精品xxxx孕妇| 影音先锋黄色资源| 国产精品无码久久久久| 一区二区三区小说| 成人在线免费高清视频| 性欧美ⅴideo另类hd| 91免费看片在线观看| 国产日韩欧美在线观看| 日韩成年人视频| 欧美综合久久| 亚洲成人激情在线观看| 91精品又粗又猛又爽| 亚洲黄色免费看| 亚洲图片欧美激情| 欧美日韩电影一区二区| h狠狠躁死你h高h| 日本欧美一区二区在线观看| 欧美激情精品久久久久| 亚洲天堂av中文字幕| 国产66精品| 欧美三级视频在线播放| 久色视频在线播放| 老司机在线永久免费观看| 一区在线观看视频| 黄色片免费在线观看视频| 日本在线视频网址| 精品国产91久久久久久老师| 国产真实乱子伦| 丝袜国产在线| 精品国产户外野外| 亚洲精品一二三四五区| 99爱在线观看| 色播五月激情综合网| 色www免费视频| xxx欧美xxx| 欧美男女性生活在线直播观看| 欧美女人性生活视频| 欧美午夜大胆人体| 亚洲欧美怡红院| 东北少妇不带套对白| 中文字幕在线三区| 国产精品不卡视频| 亚洲国产欧美日韩| 国产精品麻豆一区二区三区| 94色蜜桃网一区二区三区| 日韩欧美精品久久| 麻豆av电影在线观看| va亚洲va日韩不卡在线观看| 99国产在线| 韩国中文字幕2020精品| 久久综合狠狠综合久久激情 | 在线黄色av网站| 亚洲欧美日韩一区在线观看| 午夜精品视频网站| 亚洲精品www久久久久久| 1024成人| 97av在线视频免费播放| 日韩成人免费观看| 九九九久久久精品| 成人激情视频网| 天堂中文在线视频| 久久你懂得1024| 亚洲一区二区在线看| 欧美成人精品一区二区男人看| 亚洲国产va精品久久久不卡综合| 丰满少妇在线观看| 卡通动漫精品一区二区三区| 久热精品在线视频| 麻豆成人在线视频| 一区二区三区成人精品| 欧美在线观看视频| 亚洲成人一级片| gogo大胆日本视频一区| 在线看无码的免费网站| 国产原创在线观看| 91久久精品网| 免费在线观看成年人视频| 红桃视频国产精品| 欧美亚洲国产日本| 国内爆初菊对白视频| 91丨九色丨蝌蚪富婆spa| 国产女人18毛片| 九色porny丨入口在线| 一本色道久久综合狠狠躁的推荐| 五月天婷婷激情视频| 五月综合久久| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 日韩免费高清在线观看| 五月天激情四射| 99久免费精品视频在线观看| www.av蜜桃| 99精品国产高清一区二区麻豆| 日韩精品福利网站| 一级片黄色录像| 日韩—二三区免费观看av| 亚洲自拍高清视频网站| 五月婷婷六月色| 欧美国产日韩a欧美在线观看 | 亚洲jizzjizz日本少妇| 米奇777四色精品人人爽| 555www色欧美视频| 91精品小视频| 国产精品毛片久久| 97久久精品国产| 空姐吹箫视频大全| 天天影视色香欲综合网老头| 亚洲天堂网一区二区| 久久午夜影视| 91精品国产综合久久久久久丝袜| 黄色网址视频在线观看| 日韩三级免费观看| 2019男人天堂| 在线国产精品一区| 国产精品香蕉国产| 国产成人无码www免费视频播放| 一区二区三区 在线观看视频| 国产成人av影视| 日本不卡二三区| 亚洲一区二区少妇| 成人一级福利| 欧美一级一区二区| 免费网站看av| 99re这里都是精品| 免费观看精品视频| 青青草成人影院| 3d精品h动漫啪啪一区二区| 成年人视频免费在线播放| 在线成人av影院| 久久综合色综合| 国产一区二区三区四| 亚洲高清精品中出| 日韩一区二区三区精品 | 成人免费高清| 欧美在线免费观看亚洲| 亚洲av网址在线| 蜜桃视频在线观看一区二区| 欧美一区二区三区四区夜夜大片| 免费电影视频在线看| 日韩电影中文字幕在线观看| 国产偷人爽久久久久久老妇app| www.欧美色图| 中文久久久久久| 欧美特黄a级高清免费大片a级| 国产精品久久久999| а√天堂8资源在线官网| 日韩电影大全免费观看2023年上| 国产又大又粗又硬| 欧美日韩国产精品一区二区不卡中文| 色悠悠在线视频| 亚洲无线视频| 亚洲精品白虎| 日韩动漫一区| 波多野结衣一区二区三区在线观看 | 成人免费在线电影网| 国产精品高清在线观看| av在线加勒比| 久久网福利资源网站| 黄色av网站在线看| 精品国产sm最大网站| 五月天丁香激情| 国产999精品久久久久久绿帽| 无码人妻丰满熟妇区五十路百度| 国产精品二区影院| 中文字幕黄色大片| 精品日韩在线| 日韩美女中文字幕| h片在线观看| 久久久极品av| 淫片在线观看| 日韩视频在线一区二区| 中文字幕欧美色图| 亚洲天堂a在线| 国产123在线| 久久蜜臀中文字幕| 亚洲国产精品自拍视频| 国产成人小视频| 国产成人无码精品久久久性色| 中文字幕一区二区av| 97超级碰碰| 91精品亚洲一区在线观看| 国产精品久久久久久久app| 涩涩网在线视频| 午夜精品理论片| 成人三级高清视频在线看| 久久久久久美女| 成人免费高清在线播放| 91麻豆精品国产91久久久久久 | 日韩免费观看高清完整版 | 国产精品一卡| 欧美a v在线播放| 国产视频久久| 亚洲国产精品久久久久爰色欲| 中文日韩在线| 免费观看日韩毛片| 麻豆亚洲精品| 黄色三级视频片| 欧美va亚洲va日韩∨a综合色| 精品国产一区二区三| 久久影视精品| 成人福利网站在线观看| 电影91久久久| 国产999在线| 日本一区二区三区视频在线| 欧美日韩成人在线视频| 伊人精品影院| 久久露脸国产精品| 老司机福利在线视频| 日韩日本欧美亚洲| 午夜成年人在线免费视频| 欧美激情一区二区久久久| 国产精品一区二区日韩| 国产91色在线|| 欧美高清免费| 成人国产一区二区| 久久最新网址| 精品国产乱码久久久久久108| 午夜精品影视国产一区在线麻豆| 欧美亚洲另类在线一区二区三区| 菠萝蜜一区二区| 免费观看黄色大片| 最新成人av网站| 欧美视频第三页| 韩国三级在线一区| 看欧美ab黄色大片视频免费| 极品尤物av久久免费看| av免费观看不卡| 国产色一区二区| 青青草原在线免费观看| 精品久久久久人成| 中文字幕a级片| 精品久久国产字幕高潮| 国产精品伦理一区| 亚洲第一在线视频| lutube成人福利在线观看| 久久av红桃一区二区小说| 美女的胸无遮挡在线观看| 国产精品免费久久久久久| 亚洲精品在线影院| 人妖精品videosex性欧美| 亚洲精品大片| 91精品视频网站| 日韩欧美激情| 国产精品区一区二区三在线播放| 日本99精品| 欧美不卡福利| 欧美另类视频| 人人干人人干人人| 99精品视频在线播放观看| 日本不卡一二区| 亚洲视频一二三区| 国产精品视频一区在线观看| 欧美一级免费大片| p色视频免费在线观看| 8050国产精品久久久久久| 国产精品xnxxcom| 日韩成人av网站| 亚洲精品偷拍| 韩国一区二区三区四区| 丰满白嫩尤物一区二区| 国产视频三区四区| 懂色av影视一区二区三区| 国产日本精品视频| 欧美哺乳videos| 日本在线视频站| 国产精品2018| 91九色成人| 欧美日韩在线观看一区二区三区| 激情文学一区| 在线观看网站黄| 波波电影院一区二区三区| 欧美亚一区二区三区| 国产日韩在线不卡| 久久国产视频播放| 欧美在线影院一区二区| 欧美理论在线观看| 97精品视频在线| 国产人妖ts一区二区| 成人av在线播放观看| 激情深爱一区二区| 波多野结衣家庭教师在线观看 | 精品99在线视频| av不卡免费在线观看| 妺妺窝人体色www在线下载| 91精品国产91久久久久久一区二区| 国产在线91| 国产suv精品一区二区三区88区| 天海翼亚洲一区二区三区| 岛国大片在线播放| av网站免费线看精品| 日韩免费不卡视频| 亚洲国产精品国自产拍av秋霞| 青草影视电视剧免费播放在线观看| 亚洲一区中文字幕在线观看| 久久久久国产精品| 性色av浪潮av| 91在线云播放| 欧美a视频在线观看| 亚洲人午夜精品| 国产另类xxxxhd高清| 亚洲v国产v在线观看| 国内精品福利| jjzzjjzz欧美69巨大| 亚洲777理论| 天堂网www中文在线| 国产成人亚洲综合91精品| 日韩在线观看| 波多野结衣网页| 亚洲高清一区二区三区| 天天干天天干天天干| 2019av中文字幕| 国产精品密蕾丝视频下载| 国产青草视频在线观看| 丁香六月久久综合狠狠色| 日韩免费视频网站| 国产亚洲精品激情久久| av中文字幕在线观看第一页| 久久波多野结衣| 欧美午夜不卡| 人妻少妇精品视频一区二区三区| 欧美主播一区二区三区| 成人影院在线看| 精品欧美一区二区在线观看视频| 久久综合影音| 看黄色录像一级片| 日韩av资源在线播放| 国产成人精选| 亚洲成人第一| 国产电影一区二区三区| 中文字字幕在线中文| 亚洲成**性毛茸茸| 日韩av超清在线观看| 成年丰满熟妇午夜免费视频 | 日韩精品成人一区二区在线| 摸摸摸bbb毛毛毛片| 精品国精品国产尤物美女| 写真福利精品福利在线观看| 中国一级黄色录像| 国产一区二区在线电影| 日韩精品成人在线| 精品国产一区av| 亚洲区小说区图片区qvod| 深夜做爰性大片蜜桃|