afunms

          My Software,My Dream—Forge a more perfect NMS product.

          new framework(1)--why put Connection outside dao

              原來我們都是在new dao時,同時獲得一個Connection  
              DaoInterface dao = new XxxxDao();

              為什么新架構把Connection放在dao之外呢?為了實現事務。
              當一個事務需要調用兩個dao中兩個(以上)方向時,如果出錯,
          只有同一個Connection才能實現rollback。
              DaoInterface dao = new XxxxDao(connection);

              /**
               * 這是兩個dao實現一個事處的最好例子
               
          */

              
          public void addTop(MenuDto dto)
              
          {
                  Connection conn 
          = getConnection();
                  
          try
                  
          {            
                      MenuDao mDao 
          = new MenuDao(conn);
                      MenuRoleDao mrDao 
          = new MenuRoleDao(conn);
                      MenuDto menu 
          = mDao.getNextMenu();
                      menu.setTitle(dto.getTitle());
                      mDao.save(menu);
                      mrDao.saveMenu(menu.getId());
                  }

                  
          catch(Exception e)
                  
          {     
                      ConnectionManager.rollback(conn);
                      SysLogger.error(
          "MenuService.addTop()",e);            
                  }
                  
              }
              當然,我們也可以把所有的SQL寫在個dao中,同樣能實現rollback,
          但這樣做違背了dao操作的“原子性”。

          posted on 2007-05-01 13:10 afunms 閱讀(137) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          My Links

          News

          留言簿(18)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 吉隆县| 军事| 房产| 大埔县| 桦南县| 夏津县| 沙河市| 承德市| 宜黄县| 阜阳市| 荣成市| 衡东县| 孝感市| 东兰县| 邵东县| 福安市| 云阳县| 上饶县| 绍兴市| 米泉市| 水城县| 靖江市| 奎屯市| 株洲县| 七台河市| 浮梁县| 沙雅县| 凯里市| 温州市| 灵台县| 西乌珠穆沁旗| 辉县市| 郁南县| 祁连县| 铁岭县| 仙居县| 桃源县| 叙永县| 桂阳县| 江北区| 双牌县|