Entity & DTO & VO

zeze·2023년 8월 5일
0

study

목록 보기
6/10

Entity

  • 실제 DB 테이블과 1:1로 매핑되는 클래스
  • 테이블에 존재하는 컬럼만을 속성(필드)로 가져야함
  • 상속 X, 구현체 X
  • Entity와 DTO 분리 이유?
    • DB와 View 사이 역할 분리
    • Entity가 변경된다면 다른 클래스에 영향을 미치기 때문에, DTO 클래스가 Entity 클래스 보호를 위해 요청이나 응답값을 전달할 때 사용되어짐
@Entity
@Table(name = "person")
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    // Getters and setters
}

DTO

  • Data Transfer Object : 데이터 전송 객체
  • View와 Controller 사이에서 데이터를 주고받을 때 활용
  • 로직을 갖지 않는 순수한 데이터 객체
  • getter, setter만 가짐
public class PersonDTO{
	
    private String name;
    
    public String getName(){
    	return name;
    }
    
    public void setName(String name){
    	this.name = name;
    }
}

VO

  • Value Object : 값 오브젝트
  • 값 자체를 표현하는 객체
  • 오직 read만 가능 (setter X)
  • 값 비교를 위해 equals(), hashCode() 오버라이딩
  • DB에서 가져오는 데이터는 VO로 정의 후 사용 (DTO는 외부 시스템과 데이터 통신의 경우 사용)
public class PersonVO {
    private final String name;
    
    public PersonVO(String name) {
        this.name = name;
    }

    // Getters
}

https://devmoony.tistory.com/180
https://peonyf.tistory.com/entry/Spring-Entity-DTO-VO

0개의 댓글