@MappedSuperClass
- 방명록 프로젝트 BaseEntity 클래스의 어노테이션
- 해당 어노테이션이 적용된 클래스는 테이블로 생성되지 않는다.
- 실제 테이블은 BaseEntity 클래스를 상속한 엔티티의 클래스로 생성된다.
@AuditingEntityListener
- JPA 내부에서 엔티티 객체가 생성/변경되는 것을 감지하는 역할은 AuditingEntityListener로 이루어진다.
1 |
|
엔티티 vs DTO
- DTO는 엔티티 객체와 달리 각 계층끼리 주고받는 우편물이나 상자의 개념이다.
- 순수하게 데이터를 담고 있다는 점에서 엔티티 객체와 유사하지만, 목적 자체가 데이터의 전달이므로 읽고 쓰는 것이 모두 허용되는 점이 가능하고 일회성으로 사용되는 성격이 강하다.
- JPA를 이용하게 되면 엔티티 객체는 단순히 데이터를 담는 객체가 아니라 실제 데이터베이스와 관련이 있고, 내부적으로 엔티티 매니저가 관리하는 객체이다.
- DTO가 일회성으로 데이터를 주고받는 용도로 사용되는 것과 달리 생명주기(life cycle)도 전혀 다르기 때문에 분리해서 처리하는 것을 권장한다.
- DTO 사용 시 장점 : 엔티티 객체의 범위를 한정지어 더 안전한 코드 작성 가능
- 단점 : 엔티티와 유사한 코드를 중복으로 개발. 엔티티 객체를 DTO로 변환하거나, 반대로 DTO 객체를 엔티티로 변환하는 과정이 필요
출처 : 코드로 배우는 스프링부트 웹 프로젝트 (구멍가게 코딩단)