안녕하세요. 스프링과 하이버네이트에 많은 관심을 갖고 있는 학생입니다. 처음 스프링과 마이바티스를 사용할 때엔 DAO를 사용하다가 하이버네이트를 배우면서 사용하다보니 외국 소스코드엔 REPOSITORY를 많이 사용하더군요. 그래서 언젠가부터 DAO보단 REPOSITORY를 많이 사용하고 있습니다. 그런데 사실상 이름만 다르고 같은 기능을 담다보니 둘 사이에 차이점이 있는지 찾아보다 보니 이터너티님의 글(http://egloos.zum.com/aeternum/v/1160846)을을) 보게됬는데요.. 이해하기가 쉽지 않네요.. 혹시 쉽게 설명해 주실 수 있으신지요...
3개의 의견 from SLiPP
답변이 아니라 미안합니다 ㅎㅎ; 뜬금없지만 링크를 보며 여러생각이 들어 고맙다는 글을 남기고 싶었습니다. 고맙습니다 좋은 링크. ㅎㅎ
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를 포함한 리치도메인으로 작성하는 경우가 많습니다.
그래서 전체적인 관점에서 보면 비슷한 것 같지만 구현 시에 많은 차이가 있으므로
같다고 생각하고 짜지는 말라고 하시는 것 같네요.
답변 정말 감사합니다!!!
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.