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

Java项目中,经常遇到很多具有统一命名规则的类。比如:XXXBean、XXXDTO、XXXEntity、XXXVO、XXXForm等。这些类大多被用于MVC的Model层,有很多共性。比如都具有私有属性、Setter/Getter,但具体什么时候该用什么呢。

[b](1)Bean[/b]
JavaBeans的简称,对于Java程序员来说是最不陌生的,即使是刚开始学Java,也会应该听说过它。它是Sun公司定义的一个程序组件,并且有明确的编码规范,比如:类应该有属性,而且是私有的,通过Setter/Getter方法来访问私有属性。

[url=http://baike.baidu.com/view/1006495.htm]http://baike.baidu.com/view/1006495.htm[/url]
[url=http://en.wikipedia.org/wiki/JavaBeans]http://en.wikipedia.org/wiki/JavaBeans[/url]
[url=http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm]http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm[/url]

[b](2)DTO[/b]
Data Transfer Object数据传输对象的简称,多用于多个系统之间,网络通信,数据库存取等。将调用或返回的数据保存在DTO中从而减少调用负载。它不包含业务逻辑处理,但可以有数据整合性的校验。DTO需要注意的是必须序列化,即implements Serializable。

[url=http://baike.baidu.com/view/160599.htm]http://baike.baidu.com/view/160599.htm[/url]
[url=http://en.wikipedia.org/wiki/Data_transfer_object]http://en.wikipedia.org/wiki/Data_transfer_object[/url]
[url=http://msdn.microsoft.com/en-us/library/ms978717.aspx]http://msdn.microsoft.com/en-us/library/ms978717.aspx[/url]
[url=http://martinfowler.com/bliki/LocalDTO.html]http://martinfowler.com/bliki/LocalDTO.html[/url]
[url=http://martinfowler.com/eaaCatalog/dataTransferObject.html]http://martinfowler.com/eaaCatalog/dataTransferObject.html[/url]

[b](3)VO[/b]
Value Object值对象的简称,敏捷开发方法的创始人之一Martin Fowler认为“Value Object as a small object such as a Money or date range object”。
主要用于领域驱动设计(Domain Driven Design),VO的值/实例一般是不会变的,比如下个月的第一个工作日。一般没有Setter方法通过构造函数设定值。

这个是最多被大家无解的。

[url=http://en.wikipedia.org/wiki/Value_object]http://en.wikipedia.org/wiki/Value_object[/url]
[url=http://martinfowler.com/bliki/ValueObject.html]http://martinfowler.com/bliki/ValueObject.html[/url]

[b](4)Entity[/b]
实体,多用于DB中以表为单位存取数据,类中定义了表的每个字段的Setter/Getter。一个Entity实例即为表中的一条数据。起源于EJB,比如EJB1.x、2.x中的EntityBean,EJB3.x的JPA。

[b](5)Form[/b]
起源于Struts,现在也常用语Spring中。主要用于接收页面表单中的数据或者页面显示用数据的存储,包含校验Validate方法。

[b]综上[/b]
VO多用于金钱或者时间等代表价值的对象,比较特殊。
JavaBean更像是一个总称,他包含了Form(与页面交互)、DTO(各种信息的集合体)、Entity(与DB交互)

[b]其他[/b]
1)POJO
Plain Old Java Object简单Java对象的简称,多用于和EJB的复杂做对比。不被框架,对象模型,规约等约束,也不依存于这些东西。

2)Domain Object
域对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值