DAO와 Repository의 차이점에 대해 알고 싶습니다.

2015-01-06 16:10

안녕하세요. 스프링과 하이버네이트에 많은 관심을 갖고 있는 학생입니다. 처음 스프링과 마이바티스를 사용할 때엔 DAO를 사용하다가 하이버네이트를 배우면서 사용하다보니 외국 소스코드엔 REPOSITORY를 많이 사용하더군요. 그래서 언젠가부터 DAO보단 REPOSITORY를 많이 사용하고 있습니다. 그런데 사실상 이름만 다르고 같은 기능을 담다보니 둘 사이에 차이점이 있는지 찾아보다 보니 이터너티님의 글(http://egloos.zum.com/aeternum/v/1160846)을을) 보게됬는데요.. 이해하기가 쉽지 않네요.. 혹시 쉽게 설명해 주실 수 있으신지요...

3개의 의견 from SLiPP

2015-01-07 00:15

A. Hibernate와 JPA가 제공하는 API를 사용하면 자바 객체(Object)를 (Relation) 테이블에 매핑할 수 있습니다.

그래서 Object Relation Mapper라고 부릅니다.

B. 반면에 ibatis 같은 경우에는 java bean에 대한 매핑이 아니라 SQL에 대한 매핑입니다.

그래서 SQL매퍼라고 부릅니다.

따라서 A의 경우에는 매핑 레벨이 객체 수준이고 B는 SQL 수준이기 때문에

B는 각 데이터베이스 시스템에 대한 의존성을 가지고 있고 원글에서처럼

전체 아키텍처 관점에서 데이터를 엑세스할 수 있는 하나의 창구 (Facade)의 역할을 수행하지만

실제 구현시에는 위와 같은 차이를 지니고 있기 때문에

대체로 B의 경우에는 빈약한 빈으로 setter / getter만 가지고 있는 경우가 많고

A의 경우에는 빈에서 검색과 정렬과 같은 API를 포함한 리치도메인으로 작성하는 경우가 많습니다.

그래서 전체적인 관점에서 보면 비슷한 것 같지만 구현 시에 많은 차이가 있으므로

같다고 생각하고 짜지는 말라고 하시는 것 같네요.

의견 추가하기

연관태그

← 목록으로