zoukankan      html  css  js  c++  java
  • java中PO、VO、BO、POJO、DAO、DTO、TO、QO的理解

                前情提要
                正文详解
                    VO
                    O/R Mapper
                    PO
                    VO与PO区别
                    BO
                    POJO
                    DAO(常用)
                    DTO(较少用,过渡作用)
                    TO
                    QO
                    DO

    前情提要

    核心概念
    实体类在不同应用层面的表述

    个人建议
    因为我学习本文的知识是源于对后台的进一步理解,所以如果你结合SpringMVC的话,理解可能感觉更好一点~

    个人理解(因为对后台理解有限,不完善处以后规整)
    service:BO
    dao:DAO、DTO、PO、QO
    正文详解
    VO

        基本理解
        value object:值对象
        view object:表现层对象

        简要理解(部分人认为同DTO有部分相同作用)
        通常用于业务层之间的数据传递,主要对应界面显示的数据对象,他的对应对象可以是一个WEB页面,或者SWT、SWING的一个界面,通常用一个VO对象对应整个界面的值;

    O/R Mapper

        基本理解
        Object Relational Mapping:对象/关系 映射*

        作用
        定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作;通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了

        建议了解
        在O/R Mapping的世界里,有两个基本的也是重要的对象需要了解,即VO,PO

    PO

        基本理解
        persistant object :持久对象

        注意
        PO中应该不包含任何对数据库的操作!

        简介
        在o/r映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了。可以看成是与数据库中的表相映射的java对象,一般包含数据模型(数据库),部分业务逻辑;最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合;

        简要理解
        PO对应数据库表,且数据库表会映射一个PO(java对象),一个PO就是数据库中的一条记录,我们这可以把这条记录作为一个对象处理,可以方便的转为其它对象;

    VO与PO区别

        VO是用new关键字创建,由GC回收的
        PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁
        VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方
        PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换
        VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称
        PO的属性是跟数据库表的字段一一对应的
        PO对象需要实现序列化接口

    BO

        基本理解
        business object:业务对象

        简要理解
        封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作 ;

        栗子理解(BO统筹PO)
        主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
        比如一个简历,有教育经历、工作经历、社会关系等等。
        我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
        建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
        这样处理业务逻辑时,我们就可以针对BO去处理。

    POJO

        基本理解
        plain ordinary java object:简单无规则java对象

        简介
        单纯的传统意义的java对象。就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法

        简要理解
        POJO首先区别于其他对象,同时是最常见最多变的一个中间常用对象

        不同场景下POJO的代表
        1.一个POJO持久化以后就是PO
        2.直接用它传递、传递过程中就是DTO
        3.直接用来对应表示层就是VO

    DAO(常用)

        基本理解
        data access object:数据访问对象

        简介
        一个标准j2ee设计模式,夹在业务逻辑与数据库资源中间,通过DAO接口访问数据库,DAO中包含了各种数据库的操作方法(CRUD操作),通过它的方法,结合PO对数据库进行相关的操作,基本没有互相转化的可能性和必要;同时可以通过它把POJO持久化为PO,用PO组装出来VO、DTO ~

        简要理解
        通常和PO结合使用,DAO中包含了各种数据库的操作方法;通过它的方法 , 结合PO对数据库进行相关的操作;配合VO,提供数据库的CRUD(增删改查)操作

    DTO(较少用,过渡作用)

        基本理解
        Data Transfer Object:数据传输对象

        简要理解
        主要用于远程调用需要大量传输对象的地方

        栗子理解
        比如我们一张表有100个字段,那么对应的PO就有100个属性.
        但是我们界面上只要显示10个字段,
        客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
        这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO

    TO

        基本理解
        Transfer Object:数据传输对象

        简要理解
        在应用程序不同tie(关系)之间传输的对象

    QO

        基本理解
        Query Object:查询对象

        简要理解
        存储一些与持久性查询操作的语句对象

    DO

        基本理解
        Domain Object:领域对象

        简要理解
        就是从现实世界中抽象出来的有形或无形的业务实体

  • 相关阅读:
    主流数据可视化工具介绍:帆软FineBI
    AngularJS之表格序号
    AngularJS之表格设置样式
    正则点号和问号 +
    中国市场主流商业智能工具的对比
    ssh 认证指定端口
    EL表达式中获取list长度
    java 如何将byte中的有效长度转换为String
    RedHat Enterprise Linux 6.4-x86_64 md5:467B53791903F9A0C477CBB1B24FFD1F
    14.5.5.3 How to Minimize and Handle Deadlocks 如何减少和处理死锁
  • 原文地址:https://www.cnblogs.com/Fooo/p/12869105.html
Copyright © 2011-2022 走看看