Spring_Entity, DTO, VO
2023. 3. 22. 23:07ㆍSpring
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 사이의 역할 분리
참고자료
'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 |