spring boot로 웹 개발을 하는 중 Entity와 DTO라는 개념을 보게 되었습니다.
처음할때, 왜 이걸 구별해서 분류하는지 이해를 못 했었기에 이번에 정리해봅니다.
실제 DataBase의 테이블과 1 : 1로 Mapping 되는 Class로, DB의 테이블내에 존재하는 컬럼만을 속성(필드)
생성자(Constructor)를 이용해서 초기화하는 경우 불변 객체로 활용할 수 있고, 불변 객체로 만들면 데이터를 전달하는 과정에서 데이터가 변조되지 않음을 보장할 수 있습니다.
Builder를 사용하면 멤버 변수가 많아지더라도 어떤 값을 어떤 필드에 넣는지 코드를 통해 확인할 수 있고, 필요한 값만 넣는 것이 가능하다는 장점이 있습니다.
데이터 전송(이동) 객체라는 의미를 가지고 있다. DTO는 주로 비동기 처리를 할 때 사용
자바 빈(JavaBean)이란,
JavaBean 규약에 따라 작성된 자바 클래스로 클래스 외부에서 필드에 접근할 때는 반드시 메서드를 통해 접근해야 하며, 이때 get, set 으로 시작하는 메소드를 이용합니다.
Entity와DTO를 분리해서 관리해야 하는 이유는DB Layer와View Layer사이의 역할을 분리하기 위해서 입니다.
DTO(Data Transfer Object)는 Entity 객체와 달리 각 계층끼리 주고받는 우편물이나 상자의 개념입니다. 순수하게 데이터를 담고 있다는 점에서 Entity 객체와 유사하지만, 목적 자체가 전달이므로 읽고, 쓰는 것이 모두 가능하고, 일회성으로 사용되는 성격이 강합니다.