본문 바로가기

토이프로젝트

25.[토이프로젝트] Entity와 DTO 사용법

예전에 팀프로젝트를 할 때도

 

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

 

라고 생각하면 굉장히 편하다