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 阅读(129) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

My Links

News

留言簿(18)

随笔档案

相册

搜索

最新评论

阅读排行榜