Java项目中,经常遇到很多具有统一命名规则的类。比如:XXXBean、XXXDTO、XXXEntity、XXXVO、XXXForm等。这些类大多被用于MVC的Model层,有很多共性。比如都具有私有属性、Setter/Getter,但具体什么时候该用什么呢。
(1)Bean
JavaBeans的简称,对于Java程序员来说是最不陌生的,即使是刚开始学Java,也会应该听说过它。它是Sun公司定义的一个程序组件,并且有明确的编码规范,比如:类应该有属性,而且是私有的,通过Setter/Getter方法来访问私有属性。
http://baike.baidu.com/view/1006495.htm
http://en.wikipedia.org/wiki/JavaBeans
http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm
(2)DTO
Data Transfer Object数据传输对象的简称,多用于多个系统之间,网络通信,数据库存取等。将调用或返回的数据保存在DTO中从而减少调用负载。它不包含业务逻辑处理,但可以有数据整合性的校验。DTO需要注意的是必须序列化,即implements Serializable。
http://baike.baidu.com/view/160599.htm
http://en.wikipedia.org/wiki/Data_transfer_object
http://msdn.microsoft.com/en-us/library/ms978717.aspx
http://martinfowler.com/bliki/LocalDTO.html
http://martinfowler.com/eaaCatalog/dataTransferObject.html
(3)VO
Value Object值对象的简称,敏捷开发方法的创始人之一Martin Fowler认为“Value Object as a small object such as a Money or date range object”。
主要用于领域驱动设计(Domain Driven Design),VO的值/实例一般是不会变的,比如下个月的第一个工作日。一般没有Setter方法通过构造函数设定值。
这个是最多被大家无解的。
http://en.wikipedia.org/wiki/Value_object
http://martinfowler.com/bliki/ValueObject.html
(4)Entity
实体,多用于DB中以表为单位存取数据,类中定义了表的每个字段的Setter/Getter。一个Entity实例即为表中的一条数据。起源于EJB,比如EJB1.x、2.x中的EntityBean,EJB3.x的JPA。
(5)Form
起源于Struts,现在也常用语Spring中。主要用于接收页面表单中的数据或者页面显示用数据的存储,包含校验Validate方法。
综上
VO多用于金钱或者时间等代表价值的对象,比较特殊。
JavaBean更像是一个总称,他包含了Form(与页面交互)、DTO(各种信息的集合体)、Entity(与DB交互)
其他
1)POJO
Plain Old Java Object简单Java对象的简称,多用于和EJB的复杂做对比。不被框架,对象模型,规约等约束,也不依存于这些东西。
2)Domain Object
域对象
分享到:
相关推荐
python库。 资源全名:lol_dto-0.1a10.tar.gz
本文介绍了一个免费的、类似 AutoMapper 的库,可帮助.NET开发人员轻松地在实体框架核心和DTO的实体POCO之间映射属性。
MyBatisPlus自带了一个代码生成器mybatis-plus-generator,可基于数据库库表,结合模板技术,自动生成程序源码,不过默认情况下,只支持Entity、Mapper、Service、Controller这些层次。如果想生成未预置的代码,如vo...
简单的EntityFramework4.3+三层+DTO,如果需要简化版的,我的资源里有一个不含DTO的版本。 这个Demo的主要功能是: 1、实体类的创建、复杂类型的嵌套 2、实体类的配置(主键、外键、一对一、1对多,多对多) 3、...
标签:apollo-dto-1.0-javadoc.jar,apollo,dto,1.0,javadoc,jar包下载,依赖包
J2EE基础知识之DTO,VO,PO,DO等定义J2EE基础知识之DTO,VO,PO,DO等定义J2EE基础知识之DTO,VO,PO,DO等定义
资源分类:Python库 所属语言:Python 资源全名:lol_dto-1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
var entity = entries.FirstOrDefault(e => e.LedgerEntryID == dto.LedgerEntryID); dto.Payment = entity?.Payment; 其中dto.Payment是一个PaymentDTO类的实例,entity?.Payment是一个Payment类的实例,PaymentDTO...
专注高级查询的只读 ORM,天生支持联表,免 DTO/VO 转换,使一行代码实现复杂列表检索成为可能!
标签:apollo-dto-1.7.jar,apollo,dto,1.7,jar包下载,依赖包
对于经常写重复性代码的entity,dao,service,本例子中写了一个简单的自动生成小程序,有需要者可以下载
Javabean与DTO的区别.docx
个人对DTO这种设计模式的一些粗略见解。
标签:apollo-dto-1.2.jar,apollo,dto,1.2,jar包下载,依赖包
标签:apollo-dto-1.3.jar,apollo,dto,1.3,jar包下载,依赖包
标签:apollo-dto-1.0.jar,apollo,dto,1.0,jar包下载,依赖包
标签:apollo-dto-1.6.jar,apollo,dto,1.6,jar包下载,依赖包
标签:apollo-dto-1.5.jar,apollo,dto,1.5,jar包下载,依赖包
标签:apollo-dto-1.4.jar,apollo,dto,1.4,jar包下载,依赖包