我们在开发会遇到一些相关的术语,在这里做一些记录

    VO:View Object,视图层,其作用是将指定页面的展示数据封装起来。因为现在前后端分离了,在后端其实并不进行前端的渲染,所以比较少了。

    BO:业务对象层的缩写(Business Object),封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。具体可以看网上的一个例子:
    比如一个简历,有教育经历、工作经历、社会关系等等。
    我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
    建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
    这样处理业务逻辑时,我们就可以针对BO去处理。

    拿具体功能来举例就是,比如一个首页页面,一个API需要获取几个表的内容,比如 首页轮播图数表,广告数据表,商品推荐数据表的内容。那么我们新建一个 BO

    1. @Getter
    2. @Setter
    3. @Component
    4. public class HomeDomain {
    5. private List<HomeAdvertise> getHomeAdvertiseList;
    6. private List<HomeAdlet> getHomeAdletList;
    7. private List<HomeRecommond> getHomeRecommondList;
    8. }

    在Service层, 我们检索出数据,直接赋值给这个 BO,直接面对这个BO 进行操作

    1. public class HomeServiceImpl implements HomeService {
    2. @Autowired
    3. HomeMapper homeMapper;
    4. @Autowired
    5. HomeDomain homeDomain;
    6. public ServerResponse<HomeDomain> content(){
    7. List<HomeAdvertise> homeAdvertisesList = homeMapper.getHomeAdvertise(4);
    8. List<HomeAdlet> homeAdlets = homeMapper.getHomeAdlet(2);
    9. homeDomain.setGetHomeAdvertiseList(homeAdvertisesList);
    10. homeDomain.setGetHomeAdletList(homeAdlets);
    11. return ServerResponse.successDatails(1,homeDomain);
    12. }
    13. }

    DTO:数据传输对象(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。简单来说,当我们需要一个对象10个字段的内容,但这个对象总共有20个字段,我们不需要把整个PO对象全部字段传输到客户端,而是可以用DTO重新封装,传递到客户端。

    怎么理解呢?拿登录举例子。

    1. @RestController
    2. @RequestMapping("/api/v1")
    3. public class HomeController {
    4. @PostMapping("/login")
    5. public ServerResponse<User> Login(@RequestBody LoginDTO loginDTO){
    6. ...
    7. }
    8. }

    我们需要新建一个对象,来接受用户传输过来的数据,那么这里的数据传输对象,就是 DTO。

    DAO: 数据访问对象是第一个面向对象的数据库接口,是一个数据访问接口(Data Access Object)。 我们可以理解成在这个对象里面,会定义一系列的数据库操作,比如 insert,select 等

    DO:Domain Object,领域对象。 类似于两个概念:
    一个是阿里巴巴的开发手册中的定义
    DO( Data Object)这个等同于上面的PO
    另一个是在DDD(Domain-Driven Design)领域驱动设计中
    DO(Domain Object)这个等同于上面的BO

    PO(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数据库表里面的某个字段。完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。持久对象是由insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。

    Controller: 路由层,响应用户的请求 , 负责生成路由,通俗来讲,就是决定 用户用什么URL 进行访问。
    Service: 业务逻辑层,负责实现具体业务逻辑