DAO(Data Access Object)

DB 데이터에 접근하기 위한 객체

Spring에서는 Repository 인터페이스를 통해 DAO 기능을 구현하는 경우가 많다

데이터에 접근하기 위한 로직비즈니스 로직을 분리하기 위해 사용하며,
직접 DB에 접근하여 data를 삽입, 삭제, 조회를 하거나 쿼리 수행, 연결 관리, 트랜잭션 관리 등 조작할 수 있는 기능을 수행한다

일반적으로 DAO는 인터페이스로 정의되며, 실제 데이터 액세스 로직은 해당 인터페이스를 구현한 클래스에서 구현된다

DAO를 인터페이스로 두는 이유
  1. 의존성 역전 원칙(DIP) 적용
    고수준 모듈이 저수준 모듈에 의존하지 ㅇ낳고
Repository vs DAO