T_era
Service계층과 Repository계층에서의 로직 작성 본문
Service계층에서는 비지니스 로직 Repository계층에서는 데이터 관리를 하는게 일반적이다
근데 데이터를 전체 조회할 때 반복문을 사용해 데이터를 가져오는 과정을 설계했을 때 이 반복문은 어디에 들어가는게 합리적일지 궁금해서 알아보았다
- Data Access Layer (Repository Layer)의 책임
- 데이터를 관리하는 역할
- 여러 개의 레코드를 조회하는 것은 데이터 접근 계층의 기본적인 기능에 해당
- 반복문을 사용하여 여러 개의 데이터를 조회하고 이를 리스트 형태로 만드는 작업은 데이터베이스와의 통신 및 데이터 변환 로직이므로 Repository Layer에서 처리하는 것이 자연스럽다
- Business Layer (Service Layer)의 책임
- 비즈니스 로직을 수행하는 역할
- 조회한 여러 개의 데이터를 기반으로 특정 비즈니스 규칙을 적용
- 여러 Repository를 호출하여 데이터를 조합하는 등의 복잡한 처리를 수행
- Service Layer에서 Repository를 반복적으로 호출하여 데이터를 하나씩 가져온다면, 불필요한 데이터베이스 연결 및 통신이 발생하여 성능 저하를 유발하고 체 데이터를 가져오는 로직이 분산되어 코드의 응집성이 떨어진다
예외적인 경우:
매우 많은 양의 데이터를 처리해야 하거나, 특정 조건에 따라 데이터를 점진적으로 처리해야 하는 등의 특수한 경우에는 Service Layer에서 스트림(Stream)이나 페이징(Paging)과 같은 방식을 활용하여 데이터를 효율적으로 처리할 수 있다. 하지만 단순 전체 조회의 경우에는 Repository에서 리스트 형태로 반환하는 것이 일반적이고 효율적인 방식이다.
'Programing > Spring' 카테고리의 다른 글
| JdbcTemplate.query에서 sql의 컬럼을 바인딩할 수 없는 이유 (0) | 2025.05.13 |
|---|---|
| @Valid와 BindingResult의 관계 및 처리 방법 (0) | 2025.05.13 |
| Layered Architecture (계층형 아키텍처) (0) | 2025.05.08 |
| Custom Exception 처리 심층 분석 및 구현 (0) | 2025.05.07 |
| Client <=> Server 호출 및 응답 요약 (0) | 2025.05.07 |