dto를 record로?

Terror·2024년 10월 22일

최종 프로젝트

목록 보기
2/28
post-thumbnail

Overivew

  • 여러개의 dto를 하나의 인터페이스 안에 묶어주어 사용 가능하다

코드

public sealed interface PortfolioResponse permits PortfolioResponse.PortfolioResponseDto {
    record PortfolioResponseDto(
            Long id,
            String title,
            String content,
    ) implements PortfolioResponse {}

Sealed

  • 다음에 명시되는 클래스,인터페이스에 한해 구현 할 수 있게 제한한다

permits

  • 그 목록들을 나타낸다

위 코드는 아래와같다

public class PortfolioResponse {
  private Long id;
  private Stirng title;
  pirvate String content;
  
  public PortfolioResponse(Long id, String title, Stirng content){
    this.id = id;
    this.title = title;
    this.content = content;
  }
  그 외 record를 통해 생성되는 해쉬코드 등등...
}

사용방법

    public String test(){
        PortfolioResponse portfolioResponse = new PortfolioResponse.PortfolioResponseDto(
            ...PortfolioResponseDto 인자들 넣어주면됩니다
        )
    }

  • 위 예제에서는 id,title,content만 넣었지만 실제 생성자의 인자로서 받아야 할것들이 잘 표시되는 모습이다

일반 생성자 패턴에서처럼 of를 사용한 생성자 제어 방식

public sealed interface PortfolioResponse permits PortfolioResponse.PortfolioResponseDto {
    record PortfolioResponseDto(
            Long id,
            Long user_id,
            String title,
            String content,
            Long work_experience,
            String work_type,
            String project_history,
            AreaType area
    ) implements PortfolioResponse {
        public static PortfolioResponseDto of(Portfolio portfolio) {
            return new PortfolioResponseDto(
                    portfolio.getId(),
                    portfolio.getUser().getId(),
                    portfolio.getTitle(),
                    portfolio.getContent(),
                    portfolio.getWork_experience(),
                    portfolio.getWork_type(),
                    portfolio.getProejct_history(),
                    portfolio.getArea()
            );
        }
    }
}
  • implements안에 of를 넣어서 기존대로 사용가능하다

오늘 한것

  1. 외주 API (기본)
  2. 포트폴리오 API (기본)
  3. 공통 response,excpetion 구현
profile
테러대응전문가

0개의 댓글