어떤 개념일까?
DAO란 (Data Access Object)
데이터들을 어떻게(how) 저장할지에 대해서 대답한다.
데이터베이스에 접근해서 데이터를 가져오거나 저장하는 심부른꾼 전담 객체 비즈니스 로직과 데이터베이스 접근 로직을 철저하게 분리하기 위해서 사용한다.
Repository랑 뭐가 다른가?
어떤 관점에서 데이터를 바라보느냐에 따라 철학이 다르다
- DAO: 데이터베이스
테이블중심의 관점 - 데이터베이스와의 꼼꼼한 대화 데이터 영속성 처리가 주 목적이다.
- 이때 테이블과 1:1 매칭되는 경우가 많다.
- 주문을 저장하려면 서비스 로직에서 여러개의 DAO를 따로 불러야 한다.
Repository란?
무엇(what)을 저장할까에 대하여 대답한다.
Repository 객체 지향 중심의 관점
- DDD 도메인 주도 설계에서 나온 개념으로 비즈니스 로직이 데이터가 어디에 어떻게 저장되는지 모르게 하는 것이 목적이다.
- DB 테이블이 아니라 도메인 객체의 상태를 관리하는 데 집중한다.
- Repository는 DAO보다 한 단계 더 높은 수준의 추상화이다
- 서비스 로직은 그저 하나만 호출하고 repository 내부에서 여러개 DAO를 조합해 두테이블에 데이터를 눠너서 저장한다.
- 즉, 하나의 repository가 목적을 달성하기 위해 여러 개의 DAO를 내부적으로 사용할 수 있다.