简介:框架使用struts2+hibernate+spring. 问题: 一般save和update都是用void的吧? 我看很多演示demo中都是void. 现在项目中有以下需求. 注册用户需要判断是否注册成功.返回成功和失败. 目前做的是void 改为boolean. save: public boolean save(User user); //   update: public boolean update(User user);中间判断注册成功或失败的的业务流程应该怎样写? 麻烦各位了谢谢. 针对如何判断成功和失败的.

解决方案 »

  1.   

    public boolean save(User user){
           try{
           getHibernateTemplate().save(user);
           return true;
    }catch(Exception e){
           return false;
    }
    }
      

  2.   

    都是用异常来判断? 我流程就是这样写的 为什么被boss给否了 他说不能用异常来判断成功或失败...
      

  3.   

    Hibernate 的 Session.save(...) 方法成功后是会返回当前持久化对象的在数据库中的 id 的,这个是 JDBC 规范制定的,不过实现没就要看你数据库的驱动了; save 是否成功,拿着这个值与其不成功的时候的值进行判断就行了(id不可能为0吧);update(..) 没有这个幸运,你只能判断 Session.update(..) 没有抛出 HibernateException 就成功了,否则就失败了;
      

  4.   

    写个procedure带个返回值   如果procedure执行成功就 返回true  失败就返回false这样在java里一判断就行了,还安全!不知道说的对错?
      

  5.   

    getHibernateTemplate().save(user);  返回值是user对象。。判断返回是否为null 
    user = getHibernateTimplate().save(user);
    return user.getId() == null;
      

  6.   

    update 的话就看boolean返回值
    ps:其实最好用异常。1.save方法返回是对象,但是如果对于save方法没有做异常处理的话,就会直接报错的,何来的user.getId()的判断呢。2.save异常处理里,那就可以通过判断返回对象是否为null来判断了。
      

  7.   

    /**
     * 增加用户
     */
    public boolean insert(User object){
    boolean bool=true;
    try{
    super.getHibernateTemplate().save(object);
    }catch(Exception e){
    bool=false;
    e.printStackTrace();
    }
    return bool;
    }
      

  8.   

    保存成功后,User对象会有个id值,你判断User对象是否有id就可以了
      

  9.   

    public boolean save(User user){ 
          try{ 
          getHibernateTemplate().save(user); 
          return true; 
    }catch(Exception e){ 
          return false; 

    }
      

  10.   

    都是这样了,通过异常判断.BOOS既然否定是不是跟具体业务有关?