2022.01.25

초보개발·2022년 1월 24일
0

TIL

목록 보기
13/17

Layered Architecture


레이어드 아키텍처는 애플리케이션을 구성하는 요소들을 계층별로 나눠서 설계하는 패턴이다.

  • Presentation layer : 사용자 인터페이스나 브라우저 통신을 처리한다.
    • 인증, json 번역
  • Business Layer : 실제 서비스를 구현하는 비즈니스 로직이 들어가 있다.
    • 비즈니스 로직, validation 등
  • Persistence Layer : 데이터베이스에 객체를 mapping하는 역할을 한다.
    • 저장 로직
  • Database Layer : 실제 데이터베이스가 저장된다.

Dto, Model, Entity


자바 애플리케이션에서 사용하는 클래스는 기능 수행을 위한 클래스와 데이터를 담는 클래스로 나눌 수 있다.

  • 기능 수행을 위한 클래스 : controller, service, persistence
  • 데이터를 담는 클래스 : Entity, Model, Dto

Model

모델은 비즈니스 데이터를 담는 역할과 디비 테이블과 스키마를 표현한다. 규모가 큰 자바 애플리케이션의 경우, 모델과 엔티티를 따로 구분하여 사용한다.

Dto(Data Transfer Object)

서비스가 요청을 처리하고 클라이언트로 반환할 때, 모델 그 자체를 사용하는 경우는 극히 드물다. 모델 대신 Dto라는 데이터를 전달할 때 사용하는 오브젝트로 변환해 사용한다.
그런데, 왜 모델을 사용하지 않고 Dto 클래스를 만들어 전달할까? 첫 번째 이유는 비즈니스 로직을 Encapsulation하기 위해서이다. 모델이 갖고 있는 필드들은 디비 테이블의 속성과 같다고 볼 수 있는데, 이 것을 외부에 노출시키고 싶지 않기 위함이다. 따라서 Dto로 변경해서 사용하면 외부 사용자에게 서비스 내부의 로직, 디비 스키마 등을 숨길 수 있다.
두 번째 이유는 클라이언트는 모델의 모든 필드들을 필요로 하지 않고 다른 데이터들을 필요로 할 수 있기 때문이다. 예를 들어서, 모델의 id값은 데이터베이스에서 식별할 때 사용하는 데이터이므로 사용자에게 노출시킬 이유도 없으며 보안상으로도 숨기는 것이 맞기 때문에, Dto에 id 필드는 포함시키지 않는다.


참고 서적 : 김다정, React.js, 스프링 부트, AWS로 배우는 웹 개발 101

0개의 댓글