서비스 계층과 DTO

띠로리·2024년 8월 8일

실제 프로젝트를 작성할 때는 엔티티 객체를 영속 계층 바깥쪽에서 사용하는 방식 보다는 DTO(Data Transform Object)를 이용하는 방식을 권장한다.

DTO

각 계층에서 주고받는 우편물이나 상자의 개념

  • 엔티티와 유사성 : 데이터를 담고 있음
  • 엔티티와 차이점
    • 읽기/쓰기 모두 허용
    • 일회성으로 사용

JPA를 이용하게 되면 엔티티 객체는 단순히 데이터를 담는 객체가 아니라 실제 데이터베이스와 관련이 있고, 내부적으로 엔티티 매니저(entity manager)가 관리하는 객체이다.

DTO가 일회성으로 데이터를 주고받는 용도로 사용되는 것과 달리 생명주기(life cycle)도 전혀 다르기 때문에 분리해서 처리하는 것을 권장한다.

웹 애플리케이션을 제작할 때는 HttpServletRequestHttpServletResponse를 서비스 계층으로 전달하지 않는 것을 원칙으로 한다. 유사하게 엔티티 객체는 JPA 외에서 사용하지 않는 것을 권장한다.

DTO의 특징

  • 엔티티 객체의 범위를 한정지을 수 있기 때문에 좀 더 안전한 코드를 작성할 수 있다.
  • 화면과 데이터를 분리하려는취지에 부합한다.
  • Entity와 유사한 코드를 중복으로 개발한다. (단점)
  • 엔티티 객체와 DTO 객체 간 변환이 필요하다. (단점)
profile
차곡 차곡 기록 쌓기

0개의 댓글