Java不同分层的模型转换

在项目中不同层次之间,为了降低耦合性,便于维护和拓展,通常使用不同的模型。

DTO (Data Transger Object) 为数据传输对象,通常将底层的数据聚合传给外部系统,它通常用作 Service 和 Manager 层向上层返回的对象。如果作为分布式服务的参数或返回对象,通常要实现序列化接口。

**BO (Bussiness Object) **即业务对象。该对象中通常包含业务逻辑。比如 BO 中可以保存中间状态,放一些逻辑等,这些并不适合放在 DTO

VO (View Object) 为视图对象,通常作为控制层通过 JSON 返回给前端然后前端渲染或者加载页面模板在后端进行填充。

**AO (Application Object) **应用对象。通常用在控制层和服务层之间。有些团队会将前端查询的属性和保存的属性几乎一致的对象封装为 AO,如读取用户属性传给前端,用户在前端编辑了用户属性后传回后端。这种用法将 AO 用作 Param 和 VO 或 Param 和 DTO 的组合。

在实习的时候,项目中采用的是控制层直接返回DTO对象给前端,而服务层和持久层都是返回entities对象或者响应的集合类。可能在大型项目中为了更加职责清晰,会分的更加清晰。

另外在做的 项目中也有返回VO对象的,针对不同的业务场景返回不同的VO类型,同时为了降低查询时合并查询的复杂度,设计一个合并的VO的对象。从数据表设计的角度看会产生一些冗余,但是能够把需要用的数据保存在一张表中。

不同类型之间转换的一些工具:
1、直接采用getter/setter方法来进行转化,这种方式快速,能够根据需要进行调整,对于对象比较简单的情况比较适合;
2、采用 commons 和 Spring 的 BeanUtil,本质上是采用了反射机制,效率比较低。
3、另外有一些工具orika,mapStruct等,采用基于字节码技术的方式进行修改,速度比较快,但是需要注意,当属性修改时工具类可能不会报错从而产生一些意外的Bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值