[TIL] Spring Boot 공부 2 : 엔티티, DTO

@MappedSuperClass

  • 방명록 프로젝트 BaseEntity 클래스의 어노테이션
  • 해당 어노테이션이 적용된 클래스는 테이블로 생성되지 않는다.
  • 실제 테이블은 BaseEntity 클래스를 상속한 엔티티의 클래스로 생성된다.

@AuditingEntityListener

  • JPA 내부에서 엔티티 객체가 생성/변경되는 것을 감지하는 역할은 AuditingEntityListener로 이루어진다.
1
2
3
4
5
// BaseEntity 클래스에 추가
@EntityListeners(value = { AuditingEntityListener.class })

// Application 클래스에 추가
@EnableJpaAuditing

엔티티 vs DTO

  • DTO는 엔티티 객체와 달리 각 계층끼리 주고받는 우편물이나 상자의 개념이다.
  • 순수하게 데이터를 담고 있다는 점에서 엔티티 객체와 유사하지만, 목적 자체가 데이터의 전달이므로 읽고 쓰는 것이 모두 허용되는 점이 가능하고 일회성으로 사용되는 성격이 강하다.
  • JPA를 이용하게 되면 엔티티 객체는 단순히 데이터를 담는 객체가 아니라 실제 데이터베이스와 관련이 있고, 내부적으로 엔티티 매니저가 관리하는 객체이다.
  • DTO가 일회성으로 데이터를 주고받는 용도로 사용되는 것과 달리 생명주기(life cycle)도 전혀 다르기 때문에 분리해서 처리하는 것을 권장한다.
  • DTO 사용 시 장점 : 엔티티 객체의 범위를 한정지어 더 안전한 코드 작성 가능
  • 단점 : 엔티티와 유사한 코드를 중복으로 개발. 엔티티 객체를 DTO로 변환하거나, 반대로 DTO 객체를 엔티티로 변환하는 과정이 필요

    출처 : 코드로 배우는 스프링부트 웹 프로젝트 (구멍가게 코딩단)