예전에 팀프로젝트를 할 때도
Entity와 DTO의 차이에 관해서 공부한 적이있지만
이번 프로젝트에 적용시키기 위해서
정리를 조금 해보고자 한다
[ 참조 블로그 ]
https://wildeveloperetrain.tistory.com/101
역할 분리를 위한 Entity, DTO 개념과 차이점
'Entity, DTO 개념과 차이점 (+ VO)' - Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체입니다. (DB의 테이블과 1:1로 매
wildeveloperetrain.tistory.com
Entity
entity 클래스는 실제로 DB 테이블과 동일한 클래스입니다
예를들어
DB 테이블 - 이름, 성별
이 있다면
Entity 클래스 - 이름, 성별
만이 존재해야한다는 의미입니다
다른 변수는 절대로 추가 되서는 안되는 것이 Entity 클래스입니다
entity는 DB의 값을 가져오는 클래스이기에
setter 를 사용해서 데이터를 강제로 변경하려고 한다면
로직자체에 문제가 생길 수 있습니다
그렇기 때문에 보통은
Builder 패턴을 사용해서 데이터를 필요한 값만 입력하는 경우가 많습니다
[ 코 드 ]
@Entity
@Getter
@NoArgsConstructor
public class BoardEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long number;
private String userId;
private String userPassword;
private String userName;
private Date userAt;
@Builder
public BoardEntity(Long number, String userId,String userPassword
,String userName){
this.number = number;
this.userId = userId;
this.userPassword = userPassword;
this.userName = userName;
this.userAt = new Date();
}
}
주목 할 점은
@Data 가 아닌 @Getter만을 선언해서 사용할 수 있게 하였다
DTO(Data Transfer Object)
DTO는 계층 간 데이터 교환이 이뤄질 수 있도록 하는 객체이다
Entity를 대신해서 Controller 단에 데이터를 보내 줄 수 있는 역활로
getter, setter 등을 포함한다
다양한 패턴의 데이터를 보낼 수 있게 수정할 수 있는 것이 DTO 이다
DTO는 Entity에서 가져올 데이터 변수만을 생성한다
그리고 상황에 따라 유동적으로 생성자 등을 통해서 데이터를 교환한다
Entity와 DTO의 차이를 알겠는가??
간단하게 이야기하자면
DB와 직접적으로 연결하는 클래스는 Entity
그 사이에서 데이터를 교환하는 역활을 하는 중간다리 역활은 DTO
라고 생각하면 굉장히 편하다
'토이프로젝트' 카테고리의 다른 글
26.[토이프로젝트] mysql connect 에러 문제 해결 (1) | 2022.09.30 |
---|---|
24. [토이프로젝트] JPA 및 MySql 설정(Yml 파일) (1) | 2022.09.23 |