결론
DAO : 일대일 테이블로 매핑
Repository: 여러 DAO를 통해 데이터를 가져와 도메인 객체 만들어 제공
https://devlopsquare.tistory.com/106
DAO와 Repository
DAO Entity Bean의 퍼시스턴스 지원 기능을 대체하는 동시에 비즈니스 로직과 퍼시스턴스 로직의 명확한 분리를 위해 퍼시스턴스 로직을 캡슐화하고 도메인 레이어에 객체 지향적인 인터페이스를
devlopsquare.tistory.com
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를 포함한 리치도메인으로 작성하는 경우가 많습니다.
그래서 전체적인 관점에서 보면 비슷한 것 같지만 구현 시에 많은 차이가 있으므로
같다고 생각하고 짜지는 말라고 하시는 것 같네요.
https://slipp.net/questions/319
DAO와 Repository의 차이점에 대해 알고 싶습니다.
안녕하세요. 스프링과 하이버네이트에 많은 관심을 갖고 있는 학생입니다. 처음 스프링과 마이바티스를 사용할 때엔 DAO를 사용하다가 하이버네이트를 배우면서 사용하다보니 외국 소스코드엔
slipp.net
'Spring' 카테고리의 다른 글
Implicit super constructor Notice() is undefined. Must explicitly invoke another constructor (0) | 2022.01.17 |
---|---|
Spring project 제작 과정 ( CRUD 기능구현 예제) (0) | 2022.01.15 |
스프링 프레임워크 기본 동작 순서 및 구조 (0) | 2022.01.15 |
스프링 프로젝트 종류 (0) | 2022.01.15 |
@RequestMapping, @GetMapping, @PostMapping 차이 (0) | 2022.01.14 |
댓글