bo dto vo po在实际项目开发中是否一定要区分清楚?

作者&投稿:其费 (若有异议请与网页底部的电邮联系)
bo dto vo po有必要划分这么清楚吗~

JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java类可以通过自身机制发现和操作这些JavaBean的属性。VO即valueobject值对象主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象。然后用一个VO对象在控制层与视图层进行传输交换。DTO(经过处理后的PO,可能增加或者减少PO的属性):DataTransferObject数据传输对象主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEBservice来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。POJO(POJO是一种概念或者接口,身份及作用随环境变化而变化):POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口plainordinaryjavaobject简单java对象即POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。一个POJO持久化以后就是PO。直接用它传递、传递过程中就是DTO直接用来对应表示层就是VO

你好,按照标准来说:
1、entity里的每一个字段,与数据库相对应,
2、dto里的每一个字段,是和你前台页面相对应,
3、VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西。
举个例子:
你的html页面上有三个字段,name,pass,age
你的数据库表里,有两个字段,name,pass(注意没有age哦)而你的dto里,就应该有下面三个(因为对应html页面上三个字段嘛)
private string name;
private string pass;
private string age;
这个时候,你的entity里,就应该有两个(因为对应数据库表中的2个字段嘛)
private string name;
private string pass;
到了这里,好了,业务经理让你做这样一个业务“年龄大于20的才能存入数据库”
这个时候,你就要用到vo了
你要先从页面上拿到dto,然后判断dto中的age是不是大于20,如果大于20,就把dto中的
name和pass拿出来,放到vo中,然后在把vo中的name和pass原封不懂的给entity,然后根据
entity的值,在传入数据库,这就是他们三个的区别
PS,VO和entity里面的字段应该是一样的,vo只是entity到dto,或者dto到entity的中间过程,如果没有这个过程,你仍然可以做到增删改查,这个就根据具体公司来的,纯手打,望采纳

首先这些bo,dto,vo,po在一些情况下是需要的,在一些情况下是不需要的。我以我自己的理解说一下。
1.为什么需要:当业务复杂了,如果只用了一个po的话,有这么一些情况。a.当前端对此表的查询比较多,如果数据库中存储了创建时间,但是需要根据时间段进行查询,那po就需要加两个字段,startCreatTime和endCreatTime来获取数据,一旦查询复杂了,po的字段可能会变得很多很多,一个表里面几十个字段的po变成100个字段,以后数据库加字段也只能手动加了(不能直接用工具改,不太方便改po)。这是一个问题,会使PO中的字段变得无限大。 b.当数据库中的数据有一些关键字段,比如是密码,加密方式,用户创建时间,更新时间,但是前端不需要显示,会导致两个问题(1.传递冗余数据,增大流量开销。2.传递关键信息,暴露数据库表结构和用户其他信息。 一些破解的哥们就喜欢你这样搞)c.当比如查询用户的详情时,就会有第三个问题:PO中会加其他的子表数据,List<Subject> subjects,List<Grade> grades。或者很多很多其他的子表数据,这样一个PO就变得更加臃肿了。 在这三种情况下的叠加的话,我一个接口返回到前端就有几十到100个字段。那我遇到这么个情况:同事改我写的类的时候会问,这个前端这里应该填哪个属性呀?我也蒙蔽,。这么多字段,我忘了,所以在某一些情况下是需要相互转换的。特别是系统比较大,前后端分离需要。一定只把响应状态,显示的必要的参数,抛去不需要的参数,减少前后端的沟通成本和自己维护成本。
2.为什么不需要:反之是业务比较简单的情况下,一个表也就十几个字段,整个系统不大。应该尽可能减少这种转换。需要维护多个实体类,心累。
3.如何衡量什么时候需要呢:我觉得写代码就尽量流程化,前期多花点时间,以后维护少很多时间,这种实体类的转换BeanUtils就特别好转换,就一行代码,用多了,你的思路清晰,接收参数哪个O,显示用哪个O,就很方便(如果项目催得紧,小项目,项目经理没有要求,就用尽少用吧)。
觉得不对的地方,希望留言交流


路北区19665065315: vo bo po 分别代表什么 -
当涂翰麝珠: VO(value object) 值对象 通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递.BO(business object) 业...

路北区19665065315: SSH的DTO(VO)层,怎么设计好 -
当涂翰麝珠: 我是这样分析的.模型层我都是用两个,就是你说的那种方式1.BO用于与数据库对应,主要对数据库进行操作(增删改查)2.VO用于数据展现.比如我们数据库存放类型的值是1,2,3等值,但列表页面显示却是“普通用户”,“高级用户”,“管理员”等,那么这时就需要在BEAN中对数据库中的值进行判断.如果只用BO,那么BO中的方法无疑会非常多.杂乱,不好管理.为了方便管理,我采用BO与VO分开,然后用类属性对拷,把数据库中取出来的BO转成VO对象.用于前台展现.即 : BOVO

路北区19665065315: 在java中dto,bo,pojo,po是什么,简单说明 -
当涂翰麝珠: DTO (Data Transfer Object)数据传输对象:主要用于远程调用等需要大量传输对象的地方. BO(business object) 业务对象:从业务模型的角度看,见UML元件领域模型中的领域对象.封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进...

路北区19665065315: java 中的持久对象(po),业务对象(bo),表现层对象(vo)? -
当涂翰麝珠: 你说的是VBP模式 比如你上百度,打开首页后看到一个输入框和一个提交按钮,这2个属于表现层,你输入了一段文字,然后点击提交,这时向服务器发送了一个http请求,请求里面包含你这段文字,这段文字会被封装成po,业务对象拿着这个po请求数据库,返回你要的信息.哎 不好意思 说不明白

路北区19665065315: 如何理解《阿里巴巴Java开发手册》中提到的 DO/DTO/BO/VO/QUERY -
当涂翰麝珠: 一、排版布局1)由37页修正成33页,去除封面、前言、目录,并调整前言到目录之前.2)一级标题统一换页,二级标题统一不换页,并在之前空一行.3)增加附1(版本历史)和附2(专有名词说明)并单独成为一页.二、示例修正1)关于太阳年龄的举例错误.由于太阳年龄46亿,超过42亿的表示范围.2)个别示例的代码不符合格式规约,尤其是string args[]的表示方式错误.三、修正规则1)修正countdown 描述错误.2)修正final关于效率优化的错误描述.3)关于异常的描述错误.四、内容增加1)增加“指定集合大小”的进一步说明.2)增加卫语句的示例 代码.3)明确数据库表示删除概念的字段名为 is_deleted

路北区19665065315: VO和PO 有什么区别啊? -
当涂翰麝珠: 我一直很矛盾:是否PO可以用在商业逻辑层,当作VO使用;还是将两者分开.在许多论坛上,这两者之争也很激烈.所以今天我打算把我的想法写下来. 首先,java有几种对象(PO,VO,DAO,BO,POJO) 一、PO:persistant object ...

路北区19665065315: java项目中VO和DTO以及Entity,各自是在什么情况下应用的? -
当涂翰麝珠: 你好,按照标准来说: 1、entity里的每一个字段,与数据库相对应, 2、dto里的每一个字段,是和你前台页面相对应, 3、VO,这是用来转换从entity到dto,或者从dto到entity的中间的东西.举个例子:你的html页面上有三个字段,name...

路北区19665065315: JavaBean,POJO,VO,DTO的区别和联系 -
当涂翰麝珠: JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性.众所周知,属性名称符合这种模式,其他...

路北区19665065315: javabean与vo有什么区别?? -
当涂翰麝珠: vo (value object)他是一个值对象 是由pojo+xml配置文件组成的(pojo古老的java对象只有getter和setter方法)xml是他对应的一些字段的映射vo一般都是用在数据持久上面的 你注意看许多的持久框架都是使用到了vo javaBean就多咯.....只要是个java类基本上都可以称为javaBean

路北区19665065315: PO DTO DAO -
当涂翰麝珠: MVC模式,包括MODE、VIEW、CONTROLLER,这是一个web应用的常用分层方式,MODEL是模型层,我们这里的DAO也可以理解为属于模型层的一个实际应用.================================= 实现软件开发的分层,使得逻辑与...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网