T_era

Service계층과 Repository계층에서의 로직 작성 본문

Programing/Spring

Service계층과 Repository계층에서의 로직 작성

블스뜸 2025. 5. 8. 12:56

Service계층에서는 비지니스 로직 Repository계층에서는 데이터 관리를 하는게 일반적이다
근데 데이터를 전체 조회할 때 반복문을 사용해 데이터를 가져오는 과정을 설계했을 때 이 반복문은 어디에 들어가는게 합리적일지 궁금해서 알아보았다

  1. Data Access Layer (Repository Layer)의 책임
    1. 데이터를 관리하는 역할
    2. 여러 개의 레코드를 조회하는 것은 데이터 접근 계층의 기본적인 기능에 해당
    3. 반복문을 사용하여 여러 개의 데이터를 조회하고 이를 리스트 형태로 만드는 작업은 데이터베이스와의 통신 및 데이터 변환 로직이므로 Repository Layer에서 처리하는 것이 자연스럽다
  2. Business Layer (Service Layer)의 책임
    1. 비즈니스 로직을 수행하는 역할
    2. 조회한 여러 개의 데이터를 기반으로 특정 비즈니스 규칙을 적용
    3. 여러 Repository를 호출하여 데이터를 조합하는 등의 복잡한 처리를 수행
    4. Service Layer에서 Repository를 반복적으로 호출하여 데이터를 하나씩 가져온다면, 불필요한 데이터베이스 연결 및 통신이 발생하여 성능 저하를 유발하고 체 데이터를 가져오는 로직이 분산되어 코드의 응집성이 떨어진다

예외적인 경우:

매우 많은 양의 데이터를 처리해야 하거나, 특정 조건에 따라 데이터를 점진적으로 처리해야 하는 등의 특수한 경우에는 Service Layer에서 스트림(Stream)이나 페이징(Paging)과 같은 방식을 활용하여 데이터를 효율적으로 처리할 수 있다. 하지만 단순 전체 조회의 경우에는 Repository에서 리스트 형태로 반환하는 것이 일반적이고 효율적인 방식이다.