spring5책을 보면서 DAO가 그냥 한글말을 영어로 음차한 것이라고 생각했었는데, 실제로는 DAO라는 개념이 있다는 것을 알게되어 관련 내용을 정리해보고자 한다.
Entity
Entity class는 DB table에 존재하는 Column들을 필드로 가지는 객체이다.
DAO (Data Access Object)
Database의 추상화된 인터페이스를 제공하는 패턴. Database의 구체적인 사항을 공개하지 않고 data 연산들을 제공한다. 이는 DB의 구체적인 사항을 알지 못해도 Data에 접근 가능하게 해주어 SW가 Single Responsibility Principle을 충족할 수 있게 한다.
DTO (Data Transfer Object)
DTO는 process, layer간 data를 주고받기 위한 object이다. dataDTO는 DAO와 달리 데이터 가공을 위한 operation (encoding, decoding, retrieval, serialization, deserialization) 을 제외한 다른 operation은 가지고 있지 않다. 값 변경도 필요없기에 setter 는 구현하지 않는다.
Entity와 DTO를 분리하는 이유는 DB layer와 View layer를 분리하기 위해서이다.
DTO는 View와 통신하면서 자주 변경되지만, Entity는 DB와 연결되어 있어 변경되게 되면 다른 class들에 영향을 준다
(틀린점이 있다면 댓글로 남겨주세요..)
출처
https://velog.io/@ohzzi/Entity-DAO-DTO%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C
https://en.wikipedia.org/wiki/Data_transfer_object
https://en.wikipedia.org/wiki/Data_access_object
'일기' 카테고리의 다른 글
Proxy pattern vs Decorator pattern (0) | 2022.01.13 |
---|---|
TypeError: Object of type is not JSON serializable (0) | 2021.09.29 |