java开发中经常听说POJO、entity、model等等的一些解释

26 篇文章 0 订阅

如题

自己也算java开发一年半多了,以上几个耳熟能详的名词也都习以为常了,今天看一篇文章突然想写一下,参考别人博客,以作记录。

解释

1. Bean

Bean,应用在Spring上,所有被Spring管理的类对象就可以将其称作为Bean。

它不仅仅可以包括对象的属性以及get,set方法,还可以有具体的业务逻辑。

2. entity

顾名思义,实体,即指数据库表对应到实体类的映射。

3. POJO

普通java对象,除了属性和get、set方法外不包含具体的业务逻辑方法,和Entity区别在于没有和数据表中字段一一对应。

4. model

model的字段要大于entity的字段,model主要用作前端页面数据展示,属性,字段,类型都可以有改变,但entity则必须与数据表字段一一对应。

总结: 实际上Java Bean、POJO、 Entity、model, 都是java 对象,只不过用于不同场合罢了。

另外,根据阿里Java开发规约——:

POJO(Plain Ordinary Java Object):在本规约中,POJO专指只有setter/getter/toString的简单类,包括DO/DTO/BO/VO等。

DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
BO(Business Object):业务对象。可以由Service层输出的封装业务逻辑的对象。
Query:数据查询对象,各层接收上层的查询请求。额外规定:【强制】超过2个参数的查询封装,禁止使用Map类来传输。
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。

详细各个词的定义:

DAO: Data Acess Object,数据访问对象,这个我们不陌生,跟数据库打交道的系统都会有这样的DAO类,主要的作用:

封装对数据库的访问,常规的增删改查(CRUD操作)都通过DAO来实现。
PO/DO: Persistent Object / Data Object,持久对象 / 数据对象。

跟数据库表是一一对应的,一个PO/DO 数据是表的一条记录。
以前用Hibernate 的时候PO用的很多,现在普遍喜欢用 DO,这个看各个公司自己的规范。
PO / DO 只是数据的对象,不包含任何的操作。举个例子,学生表是StudentDO,对学生表的增删改查等操作就是StudentDAO。
DTO:Data Transfer Object,数据传输对象

在分布式系统中,系统之间可以通过DTO进行数据传输;
DTO也可以在应用内部,核心层和应用层之间传递数据,DTO只是简单的数据传输,没有业务逻辑的处理;
有的场景,比如数据库表有10个字段,id(唯一id)、version(版本号),gmt_create(记录创建时间) 这些字段不需要对外提供,所以DTO 可以只取有含义的业务字段,DO是和数据库记录的一一映射,但是DTO只需要按照业务需要定义需要的字段。
BO : Business Object, 业务对象

BO主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

在领域模型中,BO是个非常重要的概念, BO是最小的业务单元。
BO 包含数据对象(PO/DO)以及对数据的操作。
VO: View Object, 视图模型,展示层对象

对应页面显示(web页面/移动端H5/Native视图)的数据对象。

举个例子,DTO 中时间Date格式,或者是 yyyyMMddHHmmss的字符串,但是VO需要的是前端展示的格式,需要转成”yyyy年MM月dd月";


当然,实际开发中我们大多数开发人员对这类其实没有严格的要求,就比如,我司有个项目是所有实体类(与数据库表映射)都写在xxx-common模块下的model层下,而与它关联的用于前端展示的数据类写在了同模块下的VO层下,所有类命名都加VO后缀,表明与实体类的关系。这些VO类相当于实体类的延申,有些增删字段,有些修改了字段的类型,有些揉合了几个表所需要展现的字段等等。


人,不能太舒服,太舒服就会出事。

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值