- 보통 자바로 된 비즈니스 애플리케이션의 클래스는 두 가지 종류로 나눌 수 있음
- 일을 하는 클래스, 즉 기능을 수행하는 클래스 (컨트롤러, 서비스, 퍼시스턴스처럼 로직을 수행함)
- 데이터를 담는 클래스
- 아무 기능 없이 데이터베이스에서 반환된 비즈니스 데이터를 담기 위한 클래스
- 그런 클래스들을 기능에 따라 엔티티, 모델, DTO 등으로 부름
모델과 엔티티
- 모델 : 비즈니스 데이터를 담는 역할
- 엔티티 : 데이터베이스의 테이블과 스키마를 표현하는 두 역할을 함
DTO
- 서비스가 요청을 처리하고 클라이언트로 반환할 때 모델 자체를 그대로 리턴하는 경우는 별로 없음
- 보통은 데이터를 전달하는 데 사용하는 오브젝트인 Data Transfer Object로 변환해 리턴함
- 왜 그냥 모델을 리턴하지 않을까?
- 비즈니스 로직을 캡슐화 하기 위함
- 모델은 데이터베이스 테이블 구조와 매우 유사함
- 모델이 갖고 있는 필드들은 테이블의 스키마와 비슷할 확률이 높기에 이러한 필드를 외부인이 아는 것을 원치 않음
- 클라이언트가 필요한 정보를 모델이 전부 포함하지 않는 경우가 많기 때문
- 예를 들어 에러 메시지를 응답에 포함해야 할 때, 모델에 이러한 에러 메시지를 담기는 애매하고, DTO에 에러 메시지 필드를 선언하여 포함시키면 됨