잡동사니/깨달음

DAO와 DTO, VO, Entity의 차이점.

배워도끝이없네 2021. 5. 13. 09:43

이 4개의 용어중에서 명확하게 알고있던것이 하나 없이 두루뭉술하게 DAO와 DTO만 알고있었꼬

 

DTO, VO, Entity의 차이에 대해서는 전혀몰랐는데 지인과 이야기를 나누면서 찾아본결과 내가 생각하는 차이점은 이것들이다.

 

 

DAO(Data Access Object)

 - 목적 : 데이터베이스에 직접적으로 접근하고 DB의 정보를 가져오거나 수정하거나 삭제하거나의 일련의 과정을 직접적으로 지시함.

 - 구성 : SQL문과 데이터베이스에 연결하는 connector 밑 비즈니스로직.

 

DTO(Data Transfer Object)

 - 목적 : 서로다른 클래스(layer)에서의 데이터 이동을 위해서 사용되는 데이터보따리

(ex. DAO에서 DTO의 setter를 이용해 데이터를 저장하고, 이것을 Service페이지에서 호출해 데이터를 꺼내서 사용한다)

 - 구성 : private로 지정된 변수(데이터) 들과 그것에 접근할 수 있는 Getter / Setter (오직 이것들만 존재한다)

 

VO(Value Object)

- 목적 : 오직 데이터만을 참고하기 위해 사용되는 데이터와 데이터를 가공시키는 비즈니스 로직 보따리

- 구성 : final로 지정한 변수(데이터)들과 Getter(Setter은 포함되지 않는다.) 변수들을 가공해서 리턴해주는 비즈니스로직, 또 overiding된 equals와 hashcode가 필요하다(VO는 불변객체이다.)

 

Entity

- 목적 : DB의 컬럼을 담기위한 객체, 모든 구성은 Entity의 id를 배경으로 만들어진다.

- 구성 : DB의 컬럼을 변수명으로 한 변수, 비즈니스로직 Getter/Stter