日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
iBATIS事務(wù)處理淺析

iBATIS事務(wù)處理這部分是和Dao緊密相聯(lián)的。

創(chuàng)新互聯(lián)建站專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、璧山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為璧山等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

我們?cè)谑褂肈ao時(shí),如以下代碼,先插入新記錄,再進(jìn)行更新:

 
 
 
  1. personDao.insertPerson (person); // Starts transaction  
  2. person.setLastName("Begin");  
  3. personDao.updatePerson (person); // Starts a new transaction 

因?yàn)闆](méi)有顯式地啟動(dòng)事務(wù),iBatis會(huì)認(rèn)為這是兩次事務(wù),分別從連接池中取兩次Connectio。

我們所寫的Dao子類(繼承自com.ibatis.dao.client.template.SqlMapDaoTemplate)的每一個(gè)Dao方法已經(jīng)默認(rèn)為一個(gè)事務(wù)(通過(guò)動(dòng)態(tài)代理)。

而在業(yè)務(wù)層,應(yīng)該有一個(gè)類來(lái)統(tǒng)管Dao子類的事務(wù),iBatis是通過(guò)DaoManager類來(lái)作這件事的,如下:

DaoManager provides access to all DAOs it manages and also allows transactions to be committed and ended (possibly rolled back)

眾Dao子類由DaoManager產(chǎn)生,如:

 
 
 
  1. DaoManager daoManager = DaoManagerBuilder.buildDaoManager(reader);  
  2.  
  3. UserDao userDao = (UserDao) daoManager.getDao(UserDao.class); 

UserDao是用戶自己定義的接口,獲得的其實(shí)是在dao.xml中指定的相對(duì)應(yīng)的 SqlMapDao實(shí)現(xiàn)類,從而實(shí)現(xiàn)了松藕合。在良好的分層設(shè)計(jì)中,

iBATIS事務(wù)處理之業(yè)務(wù)層(service包)只需要知道Dao接口,而不去關(guān)心其具體怎么實(shí)現(xiàn)。

如果顯式地聲明事務(wù)處理語(yǔ)句,如下:

 
 
 
  1. try {  
  2. daoManager.startTransaction();  
  3. personDao.insertPerson (person);   
  4. person.setLastName("Begin");  
  5. personDao.updatePerson(person);   
  6. otherDao.doSomething(other);  
  7. ...  
  8. daoManager.commitTransaction();  
  9. } finally {  
  10. daoManager.endTransaction();  

這樣就保持了原子性,整體為一個(gè)事務(wù),要么全部執(zhí)行成功,否則回滾。

現(xiàn)在唯一的問(wèn)題就是,dao層的事務(wù)是否已經(jīng)放棄,否則產(chǎn)生事務(wù)嵌套問(wèn)題對(duì)性能會(huì)有影響

當(dāng)然,iBatis 完全可以這么做:建一個(gè)聲明式接口:IService,再使用動(dòng)態(tài)代理,將用戶自己的Serivce子類通過(guò)動(dòng)態(tài)代理自動(dòng)包上事務(wù)處理的代碼,默 認(rèn)每一個(gè)業(yè)務(wù)方法為一個(gè)事務(wù)。

大師的心如果能輕易揣測(cè),就是不大師了:),估計(jì)大師認(rèn)為這樣屬于過(guò)度設(shè)計(jì),他認(rèn)為把這種靈活性交給用戶是合適的,相當(dāng)多的service 方法只調(diào)用一個(gè)Dao方法,例如CRUD操作。

再補(bǔ)充一下,iBatis中對(duì)事務(wù)的處理是可配置的,最常用的Type是"JDBC",也可以聲明為"JTA"或"EXTERNAL".

iBATIS事務(wù)處理相關(guān)的介紹就到這里,是不是對(duì)iBATIS事務(wù)處理有了一定的了解呢?


網(wǎng)站名稱:iBATIS事務(wù)處理淺析
路徑分享:http://www.5511xx.com/article/dphhice.html