1. 개요
Data Access Object를 줄인 말이다. DB의 데이터에 접근하고 이를 다루는 객체다. SQL을 사용하여 DB에 접근한 뒤, CRUD API를 제공한다.
데이터 액세스 로직을 분리함으로써, 서비스나 비즈니스 로직(업무 로직)을 더욱 간결하고 단순화할 수 있다.
2. 역할
- 데이터 소스 연결: 데이터베이스 연결 및 해제 처리 (Connection Pool, 트랜잭션 관리 등)
- CRUD 작업: Create, Read, Update, Delete 같은 기본 쿼리 실행
- 비즈니스 로직에 맞는 쿼리 처리: 필요한 복잡한 쿼리를 작성하고 결과를 받아서 리턴
3. 장점
- 책임 분리: 데이터베이스와의 직접적인 연결/쿼리 처리를 한 객체가 담당하므로 비즈니스 로직 클래스는 데이터 처리 로직에서 해방됨
- 유지보수 용이: DAO 로직을 수정해도 비즈니스 계층 로직에는 영향을 덜 미침
- 테스트 용이: 데이터 액세스 레이어를 목(Mocks)이나 스텁(Stubs)으로 대체해 단위 테스트 수행 가능
4. 사용