afunms

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

new framework(2)--why put Statement inside dao method

原来Statement stmt = conn.createStatement();都是在放在BaseDao中,
子类dao的方法中就可以直接用这个stmt,而且方法最后都会用finally
来close这个stmt以及rs。

这个做不好,因为new一个dao后,不能连续调用两个方法,因为前一个方法
已经把stmt关闭掉了。

因此新架构中,在每个方法中都加入Statement stmt = conn.createStatement();
这样就不会有上述问题了,但以增加代码量为代价。
   例子:

    public void addSub(MenuDto dto)
    
{
        Connection conn 
= getConnection();
        
try
        
{            
            MenuDao mDao 
= new MenuDao(conn);
            MenuRoleDao mrDao 
= new MenuRoleDao(conn);
            MenuDto menu 
= mDao.getNextMenu(dto.getId().substring(0,2));
            
            dto.setId(menu.getId());
            dto.setSort(menu.getSort());
            
            mDao.save(dto);
            mrDao.saveMenu(menu.getId());
        }

        
catch(Exception e)
        
{     
            ConnectionManager.rollback(conn);
            SysLogger.error(
"MenuService.addSub()",e);            
        }
        
    }

MenuDao连续调用了两个方法getNextMenusave,如果不把

Statement stmt = conn.createStatement()置于方法内,那么我们要这样写:

           MenuDao mDao = new MenuDao(conn);

           MenuDto menu = mDao.getNextMenu(dto.getId().substring(0,2));          

MenuDao mDao2 = new MenuDao(conn);

           mDao2.save(dto);

new两次,不是不可以,但让人感觉很不爽。

posted on 2007-05-02 13:24 afunms 阅读(115) 评论(0)  编辑  收藏


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


网站导航:
 

My Links

News

留言簿(18)

随笔档案

相册

搜索

最新评论

阅读排行榜