MelRanG
719
2021-08-23 14:24:38
2
107

Spring Boot Entity값에 따른 dto 클래스 생성 관련해서 질문드립니다.


현재 선호제품 테이블과 비선호제품 테이블이 있고 사용자에게 동시에 입력받습니다.

칼럼은 userId, 제품명, 이미지    로 구성되어있고 두 테이블의 칼럼은 같습니다.


궁금증은 두 개의 테이블이 테이블명만 다르고 칼럼은 같으니 개별 Dto가 아닌 하나의 Dto클래스로 처리할 수 있지 않나? 입니다.


도메인 Entity에 인터페이스를 사용할 수 있다면 합칠 수 있지만

들은바로는 도메인 Entity는 테이블마다 1:1로 대응되며 인터페이스를 사용하면 안된다고 해서 선호제품, 비선호제품 도메인을 만들었습니다.


개별로 Dto가 4개 있고(saveDto, updateDto, ResponseDto...) 마지막 생성자에 엔티티명으로 데이터를 받고있어서 이 부분 때문에 합쳐지지가 않습니다.

favoriteProductSaveDto.java

@Getter
public class FavoriteProductSaveDto {
private Long id;
private String
product;
private String image;

public FavoriteProductSaveDto(favoriteProduct entity){
this.id = entity.getId();
this.product= entity.product();
this.image = entity.getimage();
}
}


개별로 생성하다가 객체지향과 너무 멀어지는 느낌이 들어서 질문드립니다! 

0
  • 답변 2

  • sungwon-dev
    239
    2021-08-23 14:54:53

    도메인 Entity에 인터페이스를 사용할 수 있다면 합칠 수 있지만

    들은바로는 도메인 Entity는 테이블마다 1:1로 대응되며 인터페이스를 사용하면 안된다고 해서 선호제품, 비선호제품 도메인을 만들었습니다.


    위 내용은 https://ict-nroo.tistory.com/129 링크에서 확인해보시면 좋을 거 같고요..


    개별로 Dto가 4개 있고(saveDto, updateDto, ResponseDto...) 마지막 생성자에 엔티티명으로 데이터를 받고있어서 이 부분 때문에 합쳐지지가 않습니다.


    라는 말씀은 하나의 dto로 관리해도 구분할 수 있는 키가 있다는 말씀이신가요?

    그렇다면 하나의 dto로 관리해도 무방할 거 같습니다.

    다만 좀 더 명확하게 구분할 수 있도록 ENUM으로 관리하시면 더 좋겠네요 (샘플 코드에는 안보여서요)

  • MelRanG
    719
    2021-08-23 16:04:23 작성 2021-08-23 16:13:06 수정됨

    sungwon-dev

    링크 감사합니다! 제가 몇가지 설명을 잘못 드린 것 같습니다.




    개별로 Dto가 4개 있고(saveDto, updateDto, ResponseDto...)




     이 부분은 테이블마다 Dto가 존재해서 이렇게 작성했습니다.







    선호제품saveDto, 선호제품updateDto, 선호제품ResponseDto를 만들었는데 내용이 같은 비선호제품saveDto, 비선호제품updateDto... 이런식으로 똑같이 만들지 말고 두 개의 saveDto를 하나의 saveDto로 합치고싶어서 드린 질문입니다!







    단순히 코드 복붙을 하기에는 생성자로 엔티티를 받아야하니 문제가 발생합니다.


     public FavoriteProductSaveDto(FavoriteProduct entity){
    this.id = entity.getId();
    this.product= entity.product();
    this.image = entity.getimage();
    }

    주신 링크덕에 @MappedSuperclass로 메소드는 인터페이스 비슷하게 처리하면 될 것 같은데 주입시키는 저 생성자부분은 어떻게 해야할지 잘 모르겠습니다...

    두 Dto의 칼럼은 같으니 FavoriteProductSaveDto(FavoriteProduct entity)로 받아놓고 이Dto로 UnFaovorableDto도 같이 처리해야할까요??




  • 로그인을 하시면 답변을 등록할 수 있습니다.