谈到VO马上就会想到与之相关的PO。
PO一般都数据库的直接映射,如hibernate(当然是个代理类,不细解析)
我以前曾经对VO的使用。
一、直接用hibernate 实体类做VO类型,即PO与VO同属于同一个类。
二、以前用struts1.1的时候,用formbean作为VO类,即在hibernate中把PO转成formbean,让formbean到前台展现。
我现在我又有一个新的设计观点,因为使用struts2:
把hibernate的实体类作为父类,VO继承实体类。
为什么这样做呢,先对之前二种做法的缺点说明一下:
第一种,把实体类又作为VO类,即把UI层特殊的展示需要增加实体的域来体现,这样就相关于弄脏了原来纯净的实体,如果采用分层开发话,web开发人员与后台业务开发人员相关把同一个java类不停的更改,时间久了很难管理。
第二种,采用struts1或者在webwork,struts2中增加一个与实体一样的java类做为vo,这样做是一点问题没有,不过大部份情况下po,vo各内容完全一样,或者大部份一样,再去写一套这样的一层,更是感觉完全没有什么意思,否则webwork,与struts2这样的web框架弄出来有什么意思啊,还不如用struts1.
第三个理由是,我在各个层之间之前都是采用实体来进行传参数,如action->service,saveUser(user),find(user),service->dao...现在这种设计,特别是为find(user),list(user)等方法,把实体传进去,然后在dao中组装在hql,sql或者其它。在做查询条件时又往往只有实现一个不能满足能组装的条件查询,如user中有一个birthday,如想查询2003.7 至2004.7之间生日的人,用实体肯定不能把这二个条件包含进去,所以也采用继承实体来进行处理。
还如一点,如果更需要精细话的设计,那么也可以把service中传递的值继承实体类,在web中的展现ui的实体承继service中传递值的类
分享到:
相关推荐
首先,让我们来解析一下“动态自定义VO设计与实现”中涉及到的一些关键技术点: 1. J2EE平台:J2EE平台提供了多层架构模型,可以将应用系统分为客户端、web层、业务逻辑层和数据访问层等多个层次,各层次之间通过...
该指南涵盖了 ATX12VO 电源的设计原则、电源配置、功率计算、电流定义等方面的内容。 电源设计指南 ATX12VO 电源设计指南是英特尔官方提供的电源设计指南,旨在帮助开发者和工程师设计和开发高效、可靠的电源系统...
### Webgame客户端通信VO设计构想 #### 一、引言 随着网络技术的发展,Web游戏因其便捷性和可访问性而越来越受欢迎。在Web游戏中,客户端和服务端之间的通信至关重要,良好的通信机制能够确保游戏的流畅运行及用户...
总结来说,PO和VO的主要区别在于其设计目标和应用场景: - PO主要面向数据持久化,与数据库表结构紧密相关,而VO则侧重于数据传输,常用于服务和视图间的交互。 - PO可能包含数据库映射信息,而VO则不涉及数据库...
DAO(Data Access Object)是数据访问对象,是一个 sun 的一个标准 J2EE 设计模式,这个模式中有个接口就是 DAO,它负持久层的操作。为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用,DAO 中包含了各种...
此外,它还可能使用了设计模式,如工厂模式或策略模式,来灵活处理不同的转换逻辑。 提到"所需jar",这通常指的是外部依赖的Java库文件,它们包含了额外的功能或者服务,使得vopo转换工具类能够正常工作。这些jar...
在Java开发中,我们经常会遇到各种各样的对象类型,这些对象有着特定的用途和命名约定。以下是关于POJO、VO、PO、DO、DTO...在实际开发中,根据项目需求和设计原则灵活选择和应用这些概念,能提高代码质量和可扩展性。
### Java中的PO、VO、TO、BO、DAO与POJO详解 #### 一、概述 在Java企业级应用开发中,经常会遇到各种类型的对象,如PO、VO、TO、BO...理解这些对象的概念及其应用场景,有助于我们在开发过程中做出更合适的设计选择。
YapiFileGenerattor.java是这个项目的主要实现文件,它通常会包含一个Java类,该类负责解析VO(Value Object)类,从中提取方法、参数、返回类型等信息,并将这些信息转换为Yapi支持的JSON格式,以便导入到Yapi平台...
【标题】"Vo Lam 3 abc" 暗示这可能是一个关于越南一款名为"Vo Lam Truyen Ky 3"(江湖侠客传3)的游戏或应用的更新内容。这款游戏通常被称为"Volam",是一款深受玩家喜爱的角色扮演游戏。在这个上下文中,"abc"可能...
在软件开发中,视图对象(View Object,简称VO)和数据传输对象(Data Transfer Object,简称DTO)是两种常见的设计模式,它们在系统架构中起着至关重要的作用。这两种对象主要用于解决数据模型与界面展示之间的数据...
对于开发者而言,了解和研究VO_qt的实现,不仅可以提升对QT库和共享内存技术的理解,也有助于在其他领域中设计出更优秀的解决方案。而文件"vo_qt.cpp"正是这个模块的核心代码,通过阅读和学习,我们可以深入探究其...
"Java的(PO,VO,TO,BO,DAO,POJO)解释" Java作为一门流行的编程语言,在软件开发中扮演着重要角色,其中一些关键概念和技术为开发者提供了方便快捷的开发体验。本篇文章将对Java中的PO、VO、TO、BO、DAO、POJO等概念...
本文将详细解析"PO/POJO/VO/BO/DAO/DTO"这六个概念,并探讨它们在实际项目开发中的作用和应用场景。 1. PO(Persistent Object,持久化对象) PO是指与数据库表结构一一对应的Java对象,它通常包含了数据库表中的...
总之,扩展MyBatisPlus代码生成器涉及到对生成逻辑的理解、模板设计和配置参数的设定。通过深入研究源码、理解代码生成的流程,我们可以灵活地定制代码生成器,实现前端页面、VO对象、DTO对象等自定义代码的生成,...
标题中的“vo直流脉宽(PWM)调速系统设计与研究——主电路设计课设报告”涉及的是电力拖动自动控制系统中的一个重要主题——直流调速系统,尤其是利用脉宽调制(PWM)技术来实现调速的方式。直流调速系统在工业生产中...
这是一个基于Web的博客系统,它集成了DAO(数据访问对象)、Servlet、Service和VO(值对象)等核心组件,用于实现完整的CRUD(创建、读取、更新、删除)操作。该系统使用MySQL作为后端数据库,提供了方便的数据存储...
在Laravel框架中,"Value Object"(值对象)是一种设计模式,用于封装那些具有特定值的数据,强调的是数据的不可变性。在本项目"Laravel开发-laravel-vo"中,开发者旨在深入探讨如何在Laravel应用中有效地使用值对象...
### Java的几种对象详解:PO-VO-DAO-BO-POJO #### 一、PO:...理解这些概念有助于更好地设计系统架构,提高代码的可维护性和扩展性。在实际开发过程中,根据项目的具体需求灵活运用这些对象类型是非常重要的。
在IT行业中,自身关联是一种常见的数据库设计技巧,用于表示一个实体可以与其...在实际开发中,这种设计允许构建复杂的数据结构,如树形菜单或权限系统,同时PO到VO的转换是数据层和业务层交互中常见的数据处理方式。