程序设计
VO,BO,PO,DO,DTO的区别
DTO(Data Transfer Object)数据传输对象
通常指的是前后端之间的传输
VO(Viwe Object)值对象
VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO
DTO与VO
用来接收前端返回参数的叫vo,后端返回给前端的数据叫dto
PO(Persistant Object)持久对象
PO比较好理解
简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象
通常PO里面除了get,set之外没有别的方法
对于PO来说,数量是相对固定的,一定不会超过数据库表的数量
等同于Entity,这俩概念是一致的
BO(Business Object)业务对象
BO就是PO的组合
简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象
复杂点儿的例子PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,PO5是搜索记录,BO是个人网站行为对象
BO是一个业务对象,一类业务就会对应一个BO,数量上没有限制,而且BO会有很多业务操作,也就是说除了get,set方法以外,BO会有很多针对自身数据进行计算的方法
为什么BO也画成横跨两层呢?原因是现在很多持久层框架自身就提供了数据组合的功能,因此BO有可能是在业务层由业务来拼装PO而成,也有可能是在数据库访问层由框架直接生成
很多情况下为了追求查询的效率,框架跳过PO直接生成BO的情况非常普遍,PO只是用来增删改使用
BO和DTO的区别
这两个的区别主要是就是字段的删减
BO对内,为了进行业务计算需要辅助数据,或者是一个业务有多个对外的接口,BO可能会含有很多接口对外所不需要的数据,因此DTO需要在BO的基础上,只要自己需要的数据,然后对外提供
在这个关系上,通常不会有数据内容的变化,内容变化要么在BO内部业务计算的时候完成,要么在解释VO的时候完成
MVC三层架构
dao层
dao层主要做数据持久层的工作,
负责与数据库进行联络的一些任务都封装在此
dao层的设计
设计dao层的接口
在Spring的配置文件中定义此接口的实现类
在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类
显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。
Dao接口中的方法都大同小异,因为对数据库的基本操作类似:insert、delete、update,select。 在Dao层定义的一些方法,在Service层并没有被使用的情况:Dao层的操作经过抽象后基本都是通用的,在Dao层完成相关方法的定义,有利于支持后期Service层的扩展。(与相应的mapper对应)
service层
service层主要负责业务模块的应用逻辑应用设计
设计接口
设计其实现类
这样我们就可以在应用中调用service接口来进行业务处理。service层的业务层具体要调用已经定义的dao层接口,封装service层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。程序显得非常简洁。
repository和service区别
repository就是一个管理数据持久层的,它负责数据的CRUD(Create, Read, Update, Delete)
service layer是业务逻辑层,它常常需要访问repository层,但是它不关心数据是如何获取和存储的。
controller层
controller层负责具体的业务模块流程的控制。在此层要调用service层的接口来控制业务流程。负责url映射(action),针对具体的业务流程,会有不同的控制器。我们具体的设计过程可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块。
这样不仅使程序结构变得清晰,也大大减少了代码量。
文章评论