struts2和hibernate的po,vo问题衍生

我是初学者,我用的是struts2。当hibernate处理完后生成一个结果集(这个是po吧),我在action中获得这个结果集,那么我应该把这个po转化成vo对吧,看过一个类似问题的解答,借住他的代码。

这个是PO

public class User {   
  
    private Integer id;   
  
    private String firstName;   
  
    private String lastName;   
  
    private Integer age; 

    set(),get()方法略
} 

 这个是VO类用于显示

public class VOUser {

    private String fullname;

    private int age;

                set(),get()方法略
}

 Action代码

public class HelloWorld extends ActionSupport {   
  
    private VOUser user;   
  
    public VOUser getUser() {   
        return user;   
    }   
  
    public String execute() throws Exception {   
        User poUser = null;   
  
        /** *****下面这块实现从poUser到VOUser转化****** */  
        user = new VOUser();   
        user.setFullname(poUser.getFirstName() + " " + poUser.getLastName());   
        user.setAge(poUser.getAge());   
  
        return SUCCESS;   
    }   
  
}  

      这时我的问题出来了

    但是一个Action中不光写一个显示的方法啊,增删查改都有啊

public class HelloWorld extends ActionSupport {   
  
    private VOUser user;   
  
    public VOUser getUser() {   
        return user;   
    }   
  
    public String list() throws Exception {   
    //  内容同上面的Action中的excute()方法
    }   
  
    public String add() throws Exception {   
     //  增加数据
    }

   ……
}

    这里增加数据的时候用VOUser已经不够用了,必须要User(PO)才行,请问难道我需要在这个Action中定义两个成员变量么,一个VOUser用于显示,一个User用于插入操作么?


问题补充:
可是只定义User,那不就是一个PO从头用到尾么,会产生和显示不能对应的问题啊,所以才需要PO到VO啊,不知我对你的答案的理解对不对
问题补充:
这是vo小于po的情况,要是vo大于po呢?以后碰到在想办法吧

其实你只要定义一个user就可以了
你在action里面把数据库里面的user(po)转化成1个新的pojo就可以了
[code="java"]User userPojo = new User();
userPojo.setName(user.getName());省略若干
其实你在页面上操作的是uerPojo 然后要存的时候再拷回去[/code]

[code="java"]# User userPojo = new User(); [/code]这里new出来的其实就是个vo啊
userPojo你只需要把你想显示的property塞给他就可以了