dto转化 vo_JAVA进阶:VO(DTO)与PO(DAO)之间的转换

PO即 Persistence Object

VO即 Value Object

VO和PO的主要区别在于:

VO是独立的Java Object。

PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。

实际上,这个VO被用作Data Transfer Object,即所谓的DTO。想必,VO就是Data Access

Object

---DAO了啦。为什么要有这二者之分呢?如在传统的MVC架构中,位于Model层的PO,是否允许被传递到其他层面。由于PO的更新最终将被映射到

实际数据库中,如果PO在其他层面(如View层)发生了变动,那么可能会对Model层造成意想不到的破坏。

主要想说的还是如何进行二者之间的转换:

属性复制可以通过Apache Jakarta Commons Beanutils(http://jakarta.apache.org/commons/beanutils/

)组件提供的属性批量复制功能,避免繁复的get/set操作。down下来之后,里面的API DOC一应俱全。

对于一些无需处理其它处理(如过滤)直接用BeanUtilsBean.copyProperties方法,其参考如下:

public static void copyProperties(java.lang.Object dest,

java.lang.Object orig)

throws java.lang.IllegalAccessException,

java.lang.reflect.InvocationTargetExceptioCopy property values from the

origin bean to the destination bean for all cases where the property

names are the same.

范例1:

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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值