HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
Java
Java
/
💯
Java 기본
/기본개념/
모델, 엔티티, DTO

모델, 엔티티, DTO

⏱️
Layered Architecture
 
  • 보통 자바로 된 비즈니스 애플리케이션의 클래스는 두 가지 종류로 나눌 수 있음
      1. 일을 하는 클래스, 즉 기능을 수행하는 클래스 (컨트롤러, 서비스, 퍼시스턴스처럼 로직을 수행함)
      1. 데이터를 담는 클래스
          • 아무 기능 없이 데이터베이스에서 반환된 비즈니스 데이터를 담기 위한 클래스
          • 그런 클래스들을 기능에 따라 엔티티, 모델, DTO 등으로 부름

모델과 엔티티

  • 모델 : 비즈니스 데이터를 담는 역할
  • 엔티티 : 데이터베이스의 테이블과 스키마를 표현하는 두 역할을 함

DTO

  • 서비스가 요청을 처리하고 클라이언트로 반환할 때 모델 자체를 그대로 리턴하는 경우는 별로 없음
  • 보통은 데이터를 전달하는 데 사용하는 오브젝트인 Data Transfer Object로 변환해 리턴함
  • 왜 그냥 모델을 리턴하지 않을까?
      1. 비즈니스 로직을 캡슐화 하기 위함
          • 모델은 데이터베이스 테이블 구조와 매우 유사함
          • 모델이 갖고 있는 필드들은 테이블의 스키마와 비슷할 확률이 높기에 이러한 필드를 외부인이 아는 것을 원치 않음
      1. 클라이언트가 필요한 정보를 모델이 전부 포함하지 않는 경우가 많기 때문
          • 예를 들어 에러 메시지를 응답에 포함해야 할 때, 모델에 이러한 에러 메시지를 담기는 애매하고, DTO에 에러 메시지 필드를 선언하여 포함시키면 됨