Spring - DTO vs VO vs Entity


DTO

  • Data Transfer Object

  • 데이터 전달용

  • 데이터를 전달하기 위한 객체

  • 데이터를 주고받을 때 사용한다.

  • 계층 간 데이터를 전달할 때 사용한다.

    • ex ) Cotroller 에서 Service 로 데이터를 전달 할 때

    • ex ) Service 에서 Repository 로 데이터를 전달 할 때

  • 메서드는 오직 getter/setter 메서드만 갖고, 다른 로직을 갖지 않는다.

  • 의도적으로 setter 를 지우고, 변수에 final 을 붙여서 불변 DTO 로 만들 수도 있다.

  • 속성 값이 모두 같다고 같은 객체는 아니다.



VO

  • Value Object

  • 값 표현 용

  • 불변 객체이어야만 한다. ( 값이 변경되는게 없어야 함. final 사용 )

  • 생성자를 통하여 값을 집어 넣는다.

  • 그 외의 뭔가 계산하여 return 하는 로직 같은 것이 포함되어도 된다.

  • 속성값이 모두 같으면 같은 객체여야 하기 때문에, Equals 와 haseCode 를 재정의 하여 사용한다.



Entity

  • Database 와 매핑하여 사용

  • 절대로 값 전달용으로 사용해서는 안된다.

  • setter 를 사용하지 않도록 하는게 좋다.

  • 안에서 필요한 메서드를 선언하여, 그로 인하여만 값이 바뀌게끔 해야 한다.

  • 해당 데이터를 전달 할 일이 있으면, DTO 로 바꿔서 전달하여야 한다.






results matching ""

    No results matching ""