java,ssh开发时,是不是需要建立VO类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java,ssh开发时,是不是需要建立VO类相关的知识,希望对你有一定的参考价值。

VO类,就是要显示到页面的数据的实体bean
ssh里,dao层查出数据都存在pojo里,返回pojo对象,如果直接把pojo给jsp使用,我觉得不太适合
我想把pojo里的数据,取出来存入VO,然后页面再从VO里得到数据

这样做是否有必要?

一般来说是需要的
VO是对于页面来说的。
POJO是对于数据库对应的实体类来说的
有时候没有对应的实体类都可以建一个VO来做。
这样做可能会有些损失效率,但是对以后的维护来说非常方便
参考技术A 从业务层次上分:(这里只说数据对象)
在数据库执行持久化(或者查询)操作时,我们需要PO,也就是持久化对象,在这个对象中,字段一般是对应数据库table的,而且我们还可以吧相关的查询参数写到这个类里面(比如分页参数等等),经过DAO操作后,(针对目前主流的ORM模型),我们会得带一个结果对象(或者是list),这里我们成为DO(data object)
接下来DO会被BO(business object,说简单点就是小型应用中的service层)接收并做处理,BO一般是针对一个领域的操作,所以BO处理的结果被称为DO(domain object),也就是所谓的领域对象(个人理解),再接下来,如果你存在AO层(application object),也就是应用层的话,AO会调用BO,也就是说AO是对BO的封装,说白了就是对具体应用的组合(相对来说就是BO封装DAO),AO处理完以后一般会放回一个RO(result object),封装对应用的响应和返回的结果。
然后,才是到了我们的web层,也就是我们的struts action那一层(action整合AO)。
也就是说,web层,就是我们的struts应该做的事情是什么:
1:对提交表单的验证和处理
2:对http会话的管理和相关权限的分配以及对AO的整合调用
3:对客户端(浏览器)响应结果

提到响应结果,我们就说到VO了,vo全名value object,值对象,用在这层再合适不过了,我们把从AO调用返回的RO中的数据提取出来转换成VO,就可以通过struts渲染到jsp(或者freemarker,velocity,以及json格式的ajax响应)页面上了。当然VO也可以适当充当表单对象来用作提交,但是,也只是一定程度上的,提交的表单不一定就跟返回的结果一模一样,这点相信大家都知道的 呵呵
总结一下:调用操作StrutsAction---->AO---->BO(小型项目上,AO+BO也可整合成Service)----->DAO,各层各司其责,方便以后的维护和扩展,同时结合maven等工具,每个层单独跑junit测试也是相当方便。
从一个VO到这么一大堆问题,不晓得楼主你看晕没,呵呵。以上纯属个人经验,请适当做参考,有不对之处欢迎指出。最后说句让你吐血的话:其实针对小型应用,那些所谓的PO,DO,RO都可以不需要了,直接一个VO贯穿整个数据应用就行。引用楼上兄弟的一句话:具体实现看你自己。既要保证优良的层次结构,也要杜绝过度设计。
参考技术B 其实不必要。不过为了程序的可读性以及层次性 我还是建议使用vo。具体实现看你自己。 参考技术C 我发给你 你等等
是一个大项目,我的毕业项目,用到ssh+ajax
是一个超市管理系统
代码很简洁
补:
mysql代码在webroot里面名为market.sql
邮件正在发送,可能要点时间,因为有点大20M

哦 还有,你到applicationcontext.xml里面去把数据库密码改成你的数据库密码
很简单的 你看看代码应该会改,我就不多说了

糟了,不行,邮件附件最大只支持15m,可我那项目是20m
289896737这是我qq号你加我 我直接传你
参考技术D 如果是struts1.x 是一定需要Formbean的,如果是struts2的话就没必要啦!

Java 中的PO VO DTO BO

PO 持久对象,数据;

BO 业务对象,封装对象、复杂对象 ,里面可能包含多个类;
DTO 传输对象,前端调用时传输 ;
VO 表现对象,前端界面展示。

当你业务足够简单时,一个POJO 也完全当做PO BO DTO VO 看,下面是例子:
比如有个用户类 只有 name 以及 phone
对于数据库层面也就两列,业务层面,传输,和前台展示时 都只有这两项。

然后说下他们区别开来的例子:
1 、还是用户类 name phone 加了个password。
那么你后端的PO属性也是这3个,一般数据库里这个表有几个字段你的PO就有多少属性,但是传输到前台或者展现时,我们不应该把password 密码这种东西也一起传过去,所以他们的DTO VO 就还是 name + phone
po : name phone password
dto : name phone
vo : name phone

2、现在又加了一个 枚举的状态位 status 表示用户的一些特殊状态,前台不会直接显示,可能会根据这个状态产生后续的操作,
po : name phone password status
dto : name phone status
vo : name phone

3、接着看下BO ,一个用户下面 肯定会关联很多其他的表
比如用户设置 用户信息等,那么这个BO 下 不但有用户本身的一些属性,还包含了用户设置 和用户信息这两个类。

 


链接

https://www.zhihu.com/question/39651928/answer/87536000
http://www.blogjava.net/vip01/archive/2013/05/25/92430.html

以上是关于java,ssh开发时,是不是需要建立VO类的主要内容,如果未能解决你的问题,请参考以下文章

python 模拟 ssh 执行远程命令

java 中的VO,PO,DTO,DO对象

28个Java开发常用规范技巧总结

使用 Java 通过 ssh 运行命令

java包名的约定,如Dao,vo,之类,谁能告诉我尽量多的这些约定啊?

JAVA中SSH框架