代码之家  ›  专栏  ›  技术社区  ›  Abdu Muhammadal

我应该为我的DTO使用Serializable吗?为什么应该使用?

  •  0
  • Abdu Muhammadal  · 技术社区  · 3 年前

    据我所知,当需要反序列化时,应该使用Serializable,例如在API中使用dto作为返回对象。但我应该对整个DTO对象使用Serializable,还是只对一般对象使用Serializable?

    @Data
    @AllArgsConstructor
    public class GaDTO implements Serializable {
    
        private static final long serialVersionUID = -xxxx;
    
        private String id;
        private GaStatus gaStatus;
        private PlaTurn plaTurn;
        private PlaDTO pla1;
        private PlaDTO pla2;
    
    }
    

    此DTO是的返回类型 ResponseEntity Gaddto还有其他用途。

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public class PlaDTO implements Serializable {
    
        private static final long serialVersionUID = -yyyyyy;
    
        private List<PiDTO> pis;
    
        private PiDTO mainPi;
    
    }
    
    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public class PiDTO implements Serializable {
    
        private static final long serialVersionUID = -zzzzzz;
    
        private Integer stos;
    
    }
    

    我应该只为GaDTO使用Serializable,还是其他DTO也需要它? 我为什么要用它?

    2 回复  |  直到 3 年前
        1
  •  0
  •   Yogesh Vishwakarma    3 年前

    您不需要为DTO实现可序列化和反序列化,因为它已经由Spring Boot Jackson包处理。

        2
  •  0
  •   Jayesh Chavan    3 年前

    在大多数情况下,没有理由让DTO可序列化,但我想通过添加以下想法来扩展我的答案:在更实用的体系结构中,域对象也可以直接暴露于表示层。因此,与其将域对象中的数据复制到DTO中(这违反了DRY原则),不如将分离的JPA实体作为值持有者传递给web应用程序。在这种情况下,最好实现java。伊奥。可序列化。