关于dao和dto之间的转换

先了解一些抽象对象概念

BIZ和service的区别项目前期 或者小项目没什么太大区别

但是项目大了以后 区别就很大了
项目开发到后期的话 你一个项目内包含有其他的小项目 比如 后台 erp 商城 等等 都用的是同一个数据库
这个时候 就不能使用一个service/biz 全部解决了 有些业务是通用的 有一些业务可能只有erp有 其他模块没有 也有可能同一个业务 在细微上有一些差别 如果全部都放进一个业务层中的话 这个业务层就会非常的臃肿
这个时候就需要拆分 一个基础业务层 一个应用层业务层
基础业务层只是针对该对象的CURD操作 应用业务层就是一个复杂的功能模块或流程
举个例子 service作基础业务层 biz作为应用层业务层
比如我现在要在商城中 做一个下单功能 牵涉到商品,库存,活动等等 那么我把这个东西放哪呢? 订单service层? 如果放到这里 订单service层中就会引入商品,库存,活动的service或dao 如果还有其他功能 那么这个模块牵涉到的功能就越来越多 所以并不合适 不光商城中牵涉到订单service 后台也可能会用到 erp也可能会用到 那么这时候就需要做个一个应用层
可以去了解一下 DDD 领域驱动设计

VO

value object:值对象

通常用于业务层之间的数据传递,由new创建,由GC回收。

PO

persistant object:持久层对象

对应数据库中表的字段。

VO和PO,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。

DTO

data transfer object:数据传输对象。

表里面有十几个字段:id,name,gender(M/F),age,conmpanyId(如001)...

页面需要展示四个字段:name,gender(男/女),age,conmpanyName(如今日头条股份有限公司)。

DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构。

BO

business object:业务对象

BO把业务逻辑封装为一个对象。

我理解是PO的组合,比如投保人是一个PO,被保险人是一个PO,险种信息是一个PO等等,他们组合起来是第一张保单的BO。

POJO

plain ordinary java object:简单无规则java对象

纯的传统意义的java对象,最基本的Java Bean只有属性加上属性的get和set方法。

可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。

DAO

data access object:数据访问对象

主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。

(1)dao转dto

因为dao中查询的数据是数据库中的所有字段,但是返回给前端的字段有一些不能返回给他们,比如密码这些私密信息。这时候就需要封装dto类定义需要返回的字段。dao转dto,使用transfer根据(待补)

(2)封装自定义map。比如一个map中需要put进来sso对象,userinfo等对个对象,这时候需要封装自己的map。

@Data
@Bulider
public
class UserMap(){
Sso sso;
UserInfo userinfo;
}

使用:

UserMap userMap = new UserMap;
userMap.put(返回对象);
原文地址:https://www.cnblogs.com/yangzhixue/p/14077144.html