개발공간/HW

❓Entity & DTO & VO

로지네 2023. 4. 5. 10:32

✨ 오늘의 미션이 꽤나 많고 어려워 보이는건 기분 탓이겠쥬~?

비오는 날 창문 밖 빗소리 들으며 공부하는게 얼마나 좋은 일인데요 ☔

 

🧩 Entity(엔티티)

- 소프트웨어에서 실제로 사용되는 데이터를 나타내는 개념

- 학생의 이름, 나이, 성별, 학년, 학 등이 Entity의 속성이 될 수 있음

🧩 DTO(데이터 전송 객체)

- 데이터를 전송하기 위해 사용되는 개념

- 예를 들면, 클라이언트와 서버 사이에서 데이터를 주고 받을 때 사용되는 데이터 모델이 DTO가 될 수 있음

- DTO는 주로 특정한 목적에 따라 필요한 데이터만을 담고 있음

 

🧩 VO(값 객체)

- 값을 갖는 객체로, 불변하게 설계되어 있는 개념

- VO는 주로 데이터의 일부분이나 조합된 값들을 표현하기 위해 사용됨

- 즉, 학생의 주소나 위치 정보와 같이 값의 변화가 거의 없이 사용되는 객체가 VO에 해당

 

❓예시를 들어보자!

⚠️ 가정 : 학교 시스템에서 학생 정보를 다루는 프로그램을 개발中

 

1. Entity(엔티티): 학생 정보를 나타내는 데이터 모델이 Entity가 될 수 있어요. 학생의 이름, 나이, 성별, 학번 등이 Entity의 속성(attribute)이 될 수 있음. 예를 들어, "학생"이라는 클래스가 Entity로 사용될 수 있음

 

class 학생 {
  String 이름;
  int 나이;
  String 성별;
  int 학번;
  // ...
}

 

2. DTO(데이터 전송 객체): 학생 정보를 클라이언트와 서버 사이에서 전송하기 위한 데이터 모델이 DTO가 될 수 있음.

예를 들어, 학생 정보를 조회하는 요청과 응답에 사용되는 데이터 모델이 DTO로 사용될 수 있음!

 

class 학생조회요청 {
  int 학번;
  // ...
}

class 학생조회응답 {
  String 이름;
  int 나이;
  String 성별;
  // ...
}

 

3. VO(값 객체): 학생의 좌표를 나타내는 데이터 모델이 VO가 될 수 있음.

예를 들어, 학생의 주소나 위치 정보를 표현하는데 사용되는 데이터 모델이 VO로 사용될 수 있음.

class 학생주소 {
  String 도시;
  String 거리;
  String 우편번호;
  // ...
}

 

🎵 정리하자면?

Entity는 데이터베이스에 저장되는 실제 데이터, DTO는 데이터 전송을 위해 사용되는 객체, VO는 값을 나타내는 객체로 사용되는 것