目录
1.定义
①、POJO(Plain Ordinary Java Object简单无规则java对象)是纯粹的传统意义的java对象。
②、POJO是DO/DTO/BO/VO的统称,禁止命名为***POJO
2.Param、VO、DTO、PO等各个对象的作用
①、Param和VO:Controller层是和前端交互的(Controller是提供接口的),为了限制我的入参出参,定义了Param和VO类,我的入参由Param去约束,如果我这个接口的入参不变,那么我这个Param入参就不变;如果我接口的出参不变,那么我这个VO类出参就不变。
②、DTO:DTO存在的生命周期是这个service,也就是说service方法的入参出参都用这个DTO去约束。因为这个service也是别人可以用的,不能把数据库暴露给所有人,需要用DTO来隐藏数据库。
③、PO:PO就是和数据库做关联的,数据库不变他就不变
④、param:前端向controller
⑤、vo:controller向前端
⑥、bo:controller和service
⑦、do:service和dao
3.各层的作用
①、entity层
别名: model层 ,domain层
用途: 实体层,用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。
②、mapper层
别名: dao层
用途: 对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在mybatis中方法主要与与xxx.xml内相互一一映射。
③、service层
用途:业务service层,业务逻辑处理,组装数据,将数据库中的数据查出来组装交给controller进行调用。一般就是自己写的方法封装起来,就是声明一下,具体实现在serviceImpl中。
④、controller层
别名:web 层
用途: 控制层,负责具体模块的业务流程控制,需要调用service逻辑设计层的接口来控制业务流程。因为service中的方法是我们使用到的,controller通过接收前端H5或者App传过来的参数进行业务操作,再将处理结果返回到前端。
4.服务一想和服务二通讯
①、通过http调用:Controller接口暴露了http接口,谁都可以调用(客户端,后端,Python程序,C程序等),因为大家都遵循http协议
②、通过dubbo协议:RPC(远程调用),两个虽然没在一台机器,s1服务想直接调用s2的service,不通过http协议,先将s2的client(client里面只有interface接口) jar包引进去,s1就可以直接通过@Autowired将interface注入到自己的项目里去,通过RPC协议、Dubbo协议直接调用service方法(和自己的代码里方法的用法一样)。所以需要用DTO去约束service的入参和出参,因为这个service不只是我要用,别人也可能用,需要固定格式。代码实现在s2中,所以对于s1来说叫远程调用。
③、电商公司一般都用dubbo,因为dubbo快;技术栈不是特别先进的公司会用http,通用且实现简单,不需要搭建dubbo框架