프로젝트 소스코드를 내려받은 후, 폴더 구조를 살펴봤는데 Mapper, Repository 둘 다 있는 것을 확인했다.
예전 Spring Boot 프로젝트를 진행할 때는 mapper만 사용해서 했기 때문에 mapper와 Repository의 차이가 무엇인지 궁금해서 찾아봤다!
Mapper
- Mapper는 데이터베이스와 애플리케이션 간의 상호작용을 처리하는 객체
- 주로 SQL 쿼리를 사용하여 데이터베이스에서 데이터를 가져오거나 데이터를 데이터 베이스에 저장하는 데 사용
⭐ 객체와 데이터베이스 간의 매핑을 처리하는 역할로써 객체와 데이터베이스 테이블 사이의 변환을 담당하여 객체와 테이블 간의 속성 매핑을 수행하는 것
Repository
- Repository는 데이터 엑세스 계층에서 데이터를 관리하고 엔티티에 접근하는 인터페이스를 정의하는 패턴
- Repository 인터페이스를 통해 데이터베이스와 상호작용할 수 있으며 구현체는 백그라운드에서 실제 데이터베이스 엑세스를 처리
- Repository는 일반적인 개념이며 반드시 데이터베이스에 아무것도 저장할 필요가 없다.
- 주요 기능은 도메인 개체에 대한 (쿼리 지원) 엑세스와 같은 컬렉션을 제공하는 것
- 레포지토리가 db로부터 데이터를 검색하거나 조작할 때, 다양한 검색 및 조작 기능을 갖춤
⭐ 즉, Repository는 db와 직접 상호작용을 담당하며 객체지향적인 인터페이스를 제공하여 개발자가 데이터베이스 연산(CRUD)을 더 쉽게 수행할 수 있도록 도와준다. Repository 패턴을 사용하면 SQL 쿼리를 직접 작성하지 않아도 되며, 복잡한 데이터 조작 로직을 캡슐화하여 관리할 수 있다.
참고자료
Mapper와 Repository의 차이
DB에 연결해서 데이터를 가져오는 것에 아무 생각 없이 @Repository 어노테이션을 붙여서 개발을 하고 있었다. 그러던 중 지인이 @Mapper와 @Repository의 차이에 물어왔고 생각해보니 그 둘의 차이점을
pamyferret.tistory.com
Mapper vs Repository: 데이터 엑세스 계층 비교
새로운 프로젝트에 들어가서 Mybatis를 사용하려고 하는데, 아키텍처 상 mapper와 repository가 비슷한 역할을 한다는 느낌을 받았습니다. 하지만 분명히 두 개념을 달랐기에 비교하고 언제 어떤 것을
velog.io
'Spring Boot > STUDY' 카테고리의 다른 글
[Spring] @PathVariable과 @RequestParam 차이점 (0) | 2024.09.26 |
---|---|
[Spring] Maven과 Gradle 개념 및 비교 (3) | 2024.08.29 |
[Spring Boot] 타임리프(Thymeleaf)란? (0) | 2024.07.17 |
[Spring Boot] React연동 프로젝트(4) - 상세 화면 (0) | 2024.07.04 |
[Spring Boot] React연동 프로젝트(3) - 회원가입 및 로그인 기능 구현 (1) | 2024.07.04 |