gamenome-project / gamenome-project-server

gamenome-project-server
0 stars 1 forks source link

#50 Repository design refactoring #79

Closed mobzzzzz closed 1 month ago

mobzzzzz commented 1 month ago

서비스에서 직접적으로 JpaRepository를 참조하는 일이 없게 하고 Pojo interface인 Repository, 그리고 RepositoryImpl 을 구현해 접근 가능한 저장소의 영역을 제한했습니다.

겉보기엔 그냥 메소드 이름을 중복으로 작성한 거랑 똑같은데 JpaRepository가 상속받고 있는 CRUDRepository, SortingAndPagingRepository 같은 곳에서 제공하는 기본 메소드에 접근이 함부로 가능해져서 외부에서 접근 가능한 저장소 기능을 제한한다고 보면 됩니다.

요청의 흐름 Service -> Repository -> JpaRepository

저장소에 추가적으로 필요한 기능이 생기면 Repository에 새로 정의하고 RepositoryImpl 에서 해당하는 기능 JpaRepository 이용하면 됩니다.

그리고 이 PR에 Auth service로 분리한 내용과 사소한 bugfix가 포함되어 있습니다.

mobzzzzz commented 1 month ago

@Ppajingae 직접적인 'JpaRepository' 를 가져오는 게 없어지고 저장소 자체에는 접근 하는 겁니다!

제가 받은 튜터링은 다른 Service에 역할을 위임하는 것까진 ok긴 한데 단순히 정보를 조회하는게 목표가 되면 해당 Service의 내부 비즈니스 로직에 따라서 영향을 받게 되니 결국 결합도가 낮아지는 건 아니고 필요하면 정확한 저장소에서 데이터를 꺼내오는 개념입니다. (예를 들어 User service를 통해 계속 유저 정보를 조회하기 시작하면 유저 정보 조회 비즈니스 로직에 '유저가 조회했다'라는 로깅을 남기는 경우 다른 서비스가 조회한 건데도 '유저가 조회했다' 라는 로깅이 계속 남게 되어 비즈니스 로직이 간섭받는 경우입니다.)

Ppajingae commented 1 month ago

아 이해했습니다 감사합니다!!

Ppajingae commented 1 month ago

이거는 지금 별점 구현 전이라서 성우님 따로 작업 시작 안하셨으면 먼저 merge 후에 작업 하는거 추천드립니다

mobzzzzz commented 1 month ago

워낙 Conflict 나기 쉬운 부분이라 User Following #77 까지 Merge 진행한 후에 충돌 해결하고 머지하겠습니다!

Ppajingae commented 1 month ago

넵 인지했습니다