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

  • 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 开发手册》

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值