Entity와 DTO

처음으로 하는 스프링 프로젝트에 사용하기 위해 공부를 하고있다.. 그런데 entity와 dto라는 처음 듣는 개념을 사용해야된다..

Entity

실제 DB 테이블에 매핑되는 핵심 클래스이다.

특징

  • DB 테이블과 1:1 매핑
  • 많은 서비스 클래스와 비즈니스 로직이 Entity 클래스를 기준으로 동작하므로 변경 될 경우 영향이 클 수 있다.
  • setter method 사용 X ➝ 인스턴스에 대해 setter로 접근이 가능해지므로 객체의 일관성과 안정성을 보장할 수 없게 된다.
  • 생성자와 Builder 사용
  • 생성자를 사용하는 경우: 불변 객체로 사용 가능
  • bulider 사용하는 경우: 멤버 변수가 많아지더라도 어떤 값을 넣는지 확인하기 쉬우며 필요한 값만 골라서 넣을 수 있음

DTO

계층간 데이터 교환이 이루어질 수 있도록 하는 객체로 JSON형식으로 직렬화 하는데 사용된다.

특징

  • 클라이언트 단과 직접 마주하는 계층(ex. Controller)에서 사용
  • 주로 View와 Controller 사이 데이터를 주고받을 때 활용
  • getter, setter method로 구성

DAO

실제로 DB에 접근하는 객체이다.

특징

  • Service와 DB를 연결
  • SQL을 사용하여 DB에 접근하여 데이터 처리

그래서 왜 분리하는가?

View에서 요청되는 정보는 모두 다르다. 따라서 필요한 정보에 맞게 데이터를 변환하는 로직이 필요할 수 있다.
하지만 이러한 로직을 Entitiy에 들어가는 것은 깔끔한 방식이 아니다.
또한 Entity 그대로 View로 넘기는 경우 필요 없는 정보들까지 전달 될 수 있어 이를 막기위한 로직이 필요하다.
따라서 DB와 View 사이의 역할을 분리하기 위해 사용된다.

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus