随笔-64  评论-13  文章-2  trackbacks-0
  VO是独立的Java Object。
  PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数
据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实
际数据库中。
  如果一个PO与Session对应的实体容器中分离(如Session关闭后的PO),那么
此时,它又会变成一个VO。
  一般而言,应该避免直接PO传递到系统中的其他层面,一种解决办法是,通
过一个VO,通过属性复制使其具备与PO相同属性值,并以其为传输媒质(实际上,
这个VO被用作Data Transfer Object,即所谓的DTO),将此VO传递给其他层
面以实现必须的数据传送。
  属性复制可以通过Apache Jakarta Commons Beanutils
(http://jakarta.apache.org/commons/beanutils/)组件提供的属性批
量复制功能,避免繁复的get/set操作。
下面的例子中,我们把user对象的所有属性复制到anotherUser对象中:
TUser user = new TUser();
TUser anotherUser = new TUser();
user.setName("Emma");
user.setUserType(1);
try {
BeanUtils.copyProperties(anotherUser,user);
System.out.println("UserName => "
+anotherUser.getName()
);
System.out.println("UserType => "
+ anotherUser.getUserType()
);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}

posted on 2009-10-26 23:03 桂湖山 阅读(526) 评论(0)  编辑 收藏 引用 所属分类: java
只有注册用户登录后才能发表评论。