菜鸟求教! 
    请问,在项目中有DAO层和service层。通过spring在service层中配置事务管理。在DAO层中使用hibernateTemplate对数据库做相关操作,service层中调用DAO层的方法,如果我在service的方法中写try catch,spring还会对事务进行管理吗?

解决方案 »

  1.   

    会。你在dao把异常丢给service,service丢给action。。主要是要让action知道是否抛了异常,如果是,可以友好的提示用户系统出现异常了。
      

  2.   

    那么最好是在service层捕获异常,还是在action中捕获呢。。
      

  3.   

    try catch后你有没有抛出,如果没有,肯定事务不会回滚的。
      

  4.   

    还有就是肯定在action层捕获,service层继续抛出
      

  5.   

    还是直接上代码吧public void saveTicr(TInfCardRecord ticr) throws ServiceException {
    // TODO Auto-generated method stub
    String str = ticr.getTicrId();
    boolean b = str == null || "".equals(str);
    try {
    if(b){
    ticr.setTicrId(Tools.getRandom());
    ticr.setTicrDate(new Date());
    }
    this.infCardRecordDao.saveTicr(ticr);
    } catch (Exception e) {
    // TODO: handle exception
    if(b){
    throw new ServiceException("save ticr fail");
    }else{
    throw new ServiceException("update ticr fail");
    }
    }
    }这是一个添加和修改ticr对象的一个方法看一下catch快里的语句,如果保存失败,就throw 。。到了action就能捕获这个ServiceException异常。。然后action可以给用户提示了