데이터베이스에 접근하고 데이터를 조작하는데 사용되는 객체
쉽게 말해, 데이터베이스 연결, 쿼리 실행, 트랜잭션 관리 등과 같은 데이터 액세스 로직을 처리한다.
이 때, 데이터베이스에 대한 접근을 **캡슐화**하고, 데이터베이스와의 통신을 처리한다
데이터베이스와의 상호작용을 추상화하여 비즈니스 로직과 데이터 액세스 로직을 분리함으로써 코드의 모듈성과 유지보수성을 향상시키고자 함이다.
query, insert, delete 등을 수행할 메소드를 포함한다.
비즈니스 로직과 데이터 액세스 로직을 분리한다는 것이 가장 큰 차이점이다.
DAO를 통해 데이터 액세스 로직을 캡슐화하면, 비즈니스 로직에서는 DAO를 통해 가져온 데이터를 DTO로 변환하여 사용할 수 있다.
즉, DAO가 데이터 액세스 로직을 처리하고, DTO가 비즈니스 로직에서 필요한 데이터를 캡슐화하여 전달하는 역할을 수행하게 된다.
Entity는 DB 테이블과 1:1로 매칭되는 객체다. 즉, DB의 레코드를 표현하는 객체로, Entity가 DB와 상호작용할 때 사용되는 것이 바로 DAO인 것이다.
DAO를 직접적으로 사용해본 경험이 별로 없다보니 개념이 헷갈렸는데 이번 기회에 짚고 넘어갈 수 있었다.