Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
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 사이의 역할을 분리하기 위해 사용된다.