`
rensanning
  • 浏览: 3509878 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37407
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:603972
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:677512
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:86989
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399568
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:68983
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90294
社区版块
存档分类
最新评论

Bean、DTO、VO、Entity、Form...?

    博客分类:
  • Java
 
阅读更多
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
域对象

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics