Spring Boot/STUDY

[Spring] Mapper와 Repository의 차이

코맹 2024. 8. 8. 14:32

프로젝트 소스코드를 내려받은 후, 폴더 구조를 살펴봤는데 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