Entity
- 단순히 데이터를 담는 객체의 개념을 넘어 실제 데이터베이스와 관련됨
- 내부적으로 엔티티 매니저 (Entity Manager)가 관리하는 객체
DTO
- 각 계층끼리 주고받는 우편물이나 상자의 개념
- 순수하게 데이터를 담고 있다는 점에서는 Entity와 유사
DTO가 갖는 Entity와의 차이점
- 읽고 쓰는 것이 모두 허용
- 일회성으로 사용되는 성격이 강함
DTO를 사용하는 이유
- 엔티티 객체의 범위를 한정해 좀 더 안전한 코드 작성 가능
- 화면과 데이터를 분리하려는 목적
DTO 사용의 단점
- 엔티티와 유사한 코드를 중복으로 개발해야 함
- Entity <-> DTO 변환 과정이 필수적임
Entity <-> DTO 변환
- Controller (서비스 계층) <-> DTO -> Service (변환) -> Entity <-> DB (저장소)
- 서비스 계층에서는 파라미터를 DTO 타입으로 받기 때문에 JPA로 처리하기 위해서는 Entity 타입으로 변환하는 작업이 필수적
@Service
public class BoardService {
// DTO -> Entity
default Board dtoToEntity(BoardDTO dto) {
Board entity = Board.builder()
.title(dto.getTitle())
.content(dto.getContent())
.build();
return entity;
}
}