Spring_Entity, DTO, VO

2023. 3. 22. 23:07Spring

728x90

Entity

  • 실제 DB 테이블과 매핑되는 핵심 클래스
  • DB의 테이블에 존재하는 컬럼들을 필드로 가지는 객체 (테이블이 가지지 않는 컬럼을 필드로 가지면 안됨)
  • DB 영속성의 목적으로 사용되는 객체
    • Request, Response 값을 전달하는 클래스로 자용하는것은 지양해야함
  • JPA를 사용시 실제 dB와 관련된 중요 역할 담당
@Builder
@Getter
@Entity
@NoArgsConstructor
public class Membmer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idx;
    private String name;
    private String email;
 
    public Member(Long idx, String name, String email) {
        this.idx = idx;
        this.name = name;
        this.email = email;
    }
}

DTO (Data Transfer Object)

  • Layer간 데이터 교환이 이루어 질 수 있도록 하는 객체
  • JSON serialization과 같은 직렬화에도 사용
  • Controller 등 클라이언트단과 직접 마주하는 계층에서는 Entity 대신 DTO를 사용하여 데이터 교환
  • 주로 View와 Controller 사이의 데이터를 주고받을때 활용성이 높음
  • 목적 : 전달 → 일기, 쓰기 모두 가능, 일회성으로 사용되는 성격이 강함
public class MemberDTO {
    pulic MemberDTO() { }
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

VO (Value Object)

  • 값 자체를 표현하는 객체
  • 객체들의 주소값이 달라도 데이터 값이 같으면 동일한 것으로 여김
  • getter, 비지니스 로직 포함 가능
  • setter는 가지지 않음
  • 필요시 equals, hashCode 메서드 오버라이딩
  • read only 특징

Entity와 DTO 분리

  • DB와 View 사이의 역할 분리

참고자료

https://wildeveloperetrain.tistory.com/m/101

'Spring' 카테고리의 다른 글

JPA Mapping  (0) 2023.03.31
GenerationType  (0) 2023.03.31
Spring_MySQL 연결_gradle  (0) 2023.03.22
Spring_tinyLog  (0) 2023.03.09
Spring_JPA_페이지네이션  (0) 2022.12.28