인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

피치플리님의 프로필 이미지
피치플리

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

구조랑 패턴 관련해서 질문

작성

·

10

0

현재 실무에서 ORM(Prisma)을 채택해서 백엔드를 만들고 있어요.
ORM으로 할 수록 Repository패턴과 조합이 좋지않다고 생각이 들고 실제 팀리더도 Repository패턴을 같이 쓰는거에 부정적이고 실제로 사용하지 않아요. 그렇다고 service 하나에 몰아 넣으니 저는 코드 읽기가 점점 힘들어지는거 같아요.

대체할만한걸 검색해보니 CQRS패턴이나 Query Object가 나오는데 아니면 서비스파일을 여러개 두거나... 강사님 같은 경우에는 실무에서 어떻게 대처하시는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

피치플리님, ORM을 사용할 때 어떤 구조나 패턴을 선택하는지가 중요한 문제인 것 같습니다. ORM과 Repository 패턴이 함께 사용되기 어려운 측면이 있는데, 이는 ORM 자체가 이미 데이터 접근을 추상화하고 있기 때문입니다.

이 상황에서 추천할 수 있는 몇 가지 방법은 다음과 같습니다:

  1. CQRS 패턴: 이 패턴은 읽기와 쓰기 작업을 별도의 모델로 분리하여 관리하는 방식입니다. 데이터 읽기 전용 쿼리와 데이터 수정 명령을 분리하여 코드의 명확성을 높일 수 있습니다.

  2. Query Object: 복잡한 쿼리를 객체로 캡슐화하여 관리하는 방법입니다. 이렇게 하면 각 쿼리에 대한 로직을 분리할 수 있어서 코드의 가독성과 유지보수성이 향상됩니다.

  3. 서비스 파일 분리: 서비스 단위를 더 작게 쪼개어 각 서비스가 특정 기능만을 담당하도록 하는 것도 좋은 방법입니다. 이로 인해 코드가 분산되고, 더욱 읽기 쉬운 구조를 가질 수 있습니다.

각 방법은 상황에 따라 장단점이 있으므로 팀과 함께 논의하여 적절한 방안을 선택하는 것이 좋겠습니다. 실무에서 다양한 시도를 통해 가장 적합한 구조를 찾아보세요!

추가적인 자료가 필요하다면 Spring Boot 문서의 ‘코드 구조 만들기’ 부분도 참고하시면 좋을 것 같습니다.

피치플리님의 프로필 이미지
피치플리

작성한 질문수

질문하기