java中vo与po的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中vo与po的转换相关的知识,希望对你有一定的参考价值。

首先想问在DAO中进行增删查改只能是针对po?
前台接收的表单信息封装在vo里
通过action调用service处理vo
那vo与po在哪一层进行转换最合适?
有源代码的最好。谢谢!

这东西主要看你自己想怎么用
不OO也不代表不是面向对象
面向对象也不一定非得OO
你可以把PO当VO用 因为一些小的 不容易改变的程序里 直接用PO还是很省事的
没有标准的界限 规范是规范 但不要阻碍自己的想法

不过我还是把它们分开的 说来说去也就是为了松耦合
也有VO到BO BO到PO
都不一样

在DAO中我想应该是针对PO的 不然你不就相当于设定了全局变量么
这样会让它的重用率变成0
具体的条条框框也没细研究过

共同学习 答案补充 我的框架是做了一个DAO接口 之后实现的时候调用PO 继承接口
IDAO:
public interface IBjglsxDao extends BaseIface
//按Glsxlxh查询
public abstract Object queryForGlsxlxh(Object object);

DAO:
public class BjglsxDao extends BaseDao implements IBjglsxDao

public BjglsxDao(DaoManager arg0)
super(arg0);
// TODO Auto-generated constructor stub

public Object queryForGlsxlxh(Object object)
// TODO Auto-generated method stub
return queryForList("jxgl_bjglsx_selectForGlsxlxhForList",object);

参考技术A 我是在DAO中转换,因为我的框架定义为只有DAO中能操作po,其他层次只能传递po,而不能操作po。
BeanUtils.copyProperties(Object a,Object b);
参考技术B DAO中转换 通常为合适的
现在基本节省了VO这一步。基本上都是DAO-PO VO 和BO现在已经基本上消失了

java术语(PO/POJO/VO/BO/DAO/DTO)

PO(persistant object) 持久对象

在o/r映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.

VO(value object) 值对象

通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递.

BO(business object) 业务对象

从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作.

POJO(plain ordinary java object) 简单无规则java对象

纯 的传统意义的java对象.就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法.我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!.

DAO(data access object) 数据访问对象

是sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负责持久层的操作.为业务层提供接口.此对象用于访问数据库.通常和PO结合使用,DAO中包含了各种数据库的操作方法.通过它的方法,结合PO对数据库进行相关的操作.夹在业务逻辑与数据库资源中间.配合VO, 提供数据库的CRUD操作...

DTO (Data Transfer Object)数据传输对象

主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

O/R Mapper 对象/关系 映射

定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作.通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了.
实体Model(实体模式)
DAL(数据访问层)
IDAL(接口层)
DALFactory(类工厂)
BLL(业务逻辑层)
BOF Business Object Framework 业务对象框架
SOA Service Orient Architecture 面向服务的设计
EMF Eclipse Model Framework Eclipse建模框架

以上是关于java中vo与po的转换的主要内容,如果未能解决你的问题,请参考以下文章

PO BO VO DTO POJO DAO概念及其作用(附转换图)

使用Dozer优雅的将DO转换成VO

除了 BeanUtils ,这款 PO VO DTO 转换神器香!

别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?

别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?

别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?