美文网首页
Java中POJO、BO、DTO、DO对象简述

Java中POJO、BO、DTO、DO对象简述

作者: dayue_ | 来源:发表于2019-11-19 21:50 被阅读0次
    • POJO(Plain Ordinary Java Object):简单对象,专指只有 setter / getter / toString 的简单类,即DO/DTO/BO等领域对象的统称。阿里开发手册规约禁止对象命名成xxxPOJO。

    • DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。xxxDO,xxx为数据表名。

    • DTO( Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。即指数据传输过程中需要用到的对象,如微服务之间需要封装传输的一些对象,或业务层跟持久层之间传输的对象,可以用xxxDTO,xxx 为业务领域相关的名称。

    • BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。在业务逻辑实现过程中,一些DO领域对象的属性需要封装来使用的时候,可以封装成BO业务对象,笔者对BO业务对象理解还不是很深刻,在开发中也只是到DO和DTO而已,没严格地区分BO和DTO。

    • 补充阿里对领域对象的一些规约:
      (1)POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。
      反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解
      析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。
      (2)所有的 POJO 类属性必须使用包装数据类型(包装数据类型是指Long、Integer等包装数据类型,而不是基本数据类型long、int等基本数据类型)。
      正例:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。
      另外,基本数据类型有默认值,如int不给初始值的时候,默认值是0,而Integer不给初始值是null,故POJO 类属性用包装数据类型比较合理,如果没赋值再判空的时候,本身为null却被初始化为默认值0也是不合理的。
      (3)定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
      (4)POJO 类必须写 toString 方法。
      (5)禁止在 POJO 类中,同时存在对应属性 xxx 的 isXxx()和 getXxx()方法。
      (6)类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO/ PO / UID 等。
      正例:JavaServerlessPlatform / UserDO / XmlService / TcpUdpDeal / TaPromotion
      反例:javaserverlessplatform / UserDo / XMLService / TCPUDPDeal / TAPromotion

    参考资料:
    《JAVA 开发手册》

    相关文章

      网友评论

          本文标题:Java中POJO、BO、DTO、DO对象简述

          本文链接:https://www.haomeiwen.com/subject/leswictx.html