1. Entity
Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체이다.DB의 테이블과 1대1로 대응된다. Getter의 사용은 지양하고, Setter는 구현하지 않는 것이 좋다. (Builder 패턴으로 사용하는 것이 가장 좋음, Entity의 인스턴스 값들이 무분별하게 변경될 수 있기 때문)
@Entity, @Column, @Id
2. DTO (Data Transfer Object)
DTO는 계층 간 데이터 교환이 이루어질 수 있도록 하는 객체이다. (계층에 대한 자세한 설명은 https://xxeol.tistory.com/26 참고)
단순히 계층간 데이터 교환이 이뤄질 수 있도록 하는 객체이므로, 순수한 데이터 객체여야 한다.
3. DAO (Data Access Object)
DAO는 실제로 DB에 접근하는 객체이다. Service 모델과 실제 데이터베이스를 연결한다. 쉽게 말해 서비스와 DB 사이에서 데이터를 옮기는 역할을 한다.
DAO는 부가적으로 적은 것이고, 주로 Entity와 DTO를 비교하는데, 둘을 분리하는 이유는 주로 View Layer와 DB Layer의 역할을 철저하게 구분하기 위해서이다. DTO는 클라이언트와 서버 간 데이터 전송을 위해 설계된 객체이고, Entity는 데이터베이스에 저장되는 데이터 객체이다.
MVC의 구조로 보면 DTO는 View와 Controller 간 인터페이스 역할을 하며, Entity는 Model(데이터베이스)의 역할을 한다. Entity는 모든 정보를 담고 있지만 DTO는 Entity 범위에서 필요한 필드를 재정의하여 필요한 데이터만 전송될 수 있도록 한다.
따라서 둘을 분리해서 씀으로서 Entity 내 불필요한 정보들을 매번 전송할 필요가 없다. 또한 Entity 클래스가 변경되면 여러 클래스에 영향을 끼치는 반면 DTO는 자주 변경되어야 하므로 분리해서 쓰는 것이 유리하다.
'2024-겨울 프로젝트 관련 공부' 카테고리의 다른 글
[Spring Boot] [기본 개념] MVC, DI 공부 (0) | 2025.01.07 |
---|---|
[Spring Boot / Kotlin] 튜토리얼4, Spring Data CrudRepository 활용하기 (0) | 2025.01.07 |
[Spring Boot / Kotlin] 튜토리얼3, data base 추가하기 (0) | 2025.01.06 |
[Spring Boot / Kotlin] 튜토리얼2, data class 추가하기 (0) | 2025.01.04 |
[Spring Boot / Kotlin] 튜토리얼1, Spring Boot 시작하기 (0) | 2025.01.04 |