본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JPA

SPRING - JPA를 활용한 API 개발 ( 권장하는 방법 )

반응형

엔티티를 DTO로 변환하여 사용하는 방법

 

-Order를 담을 Dto-

생성자로는 Order를 파라미터로 받아 order의 정보가 set되게 하였다.

 

데이터로 받은 리스트인 orders를  SimpleOrderDto에 파라미터로 order 엔티티를

넘기면 리스트에 담긴 order 엔티티가 하나씩 꺼내져서 SimpleOrderDto로  변환되고

.collect를 사용하여 다시 List에 담아준 후 리턴했다

 

**위처럼 List를 바로 반환하게되면 배열이 반환되기 때문에 API 확장성이 굳어 버리기 떄문에 감싸줄 수 있는 객체를 만들어 한번 감싸주는 것이 좋다 

 

ex)@Data
    @AllArgsConstructor
    static class Result<T>{
         private T data
    }

 

-DTO로 리턴한 결과값-

-장점

1.DTO의 필드는 곧 API 스펙이 되기 때문에 엔티티를 사용하는 것과 다르게 필드명을 지정하여 사용할 수 있다.

2.스펙상에 추가하고 싶은 것들만 필드로 만들어 받아왔기 떄문에  성능상으로 훨씬 좋다

3. 엔티티가 직접 노출되지 않기떄문에 보안상으로 좋다.

4.엔티티가 변경된다 해도 스펙이 변경되지 않고  컴파일시 오류를 확인할 수 있다 

 

반응형