Search

Spring에서 Join관계의 Entity를 취합하여 정보를 전달하는 과정

태그

Description

현재 마이페이지를 구성하는 중입니다.
Vue에서 SignIn을 하면 입력한 이메일에 해당하는 Token값을
“userInfo” 라는 키 값에 매핑하여 localStorage에 저장하였고
SignIn을 한 뒤에 MyPage를 방문하게 된다면
Token 값으로 해당하는 회원의 정보들을 가져오는 Spring 코드를 작성하였습니다.
하지만 현재 Spring 에서는 Member, Member_Profile, Authentication 로
회원의 정보들을 나누어서 저장을 하였는데
마이페이지에 해당하는 회원의 모든 정보들을 불러오게 된다면
Member 리포지터리에서 @Query문(JPQL)을 사용하여 모든 정보들을 가져옵니다.
Request객체에 담아서 전달 하는 게 좋을까요 ?
아니면 Service에서 지금 만들어 놓은 코드에
Member_id를 각 Entity에서 검색을 하여 가져 오는 게 좋을까요?

Try

@Override public Member list(String token) { Long memberId = redisService.getValueByKey(token); Optional<Member> maybeMember = memberRepository.findById(memberId); if (maybeMember.isPresent()) { member = maybeMember.get(); System.out.println("Member go!!"); } else { System.out.println("No member?"); } Optional<MemberProfile> maybeMemberProfile = memberProfileRepository.findByMemberId(memberId); if (maybeMemberProfile.isPresent()) { MemberProfile memberProfile = maybeMemberProfile.get(); System.out.println("MemberProfile go!!"); } else { System.out.println("No memberProfile?"); } Optional<Authentication> maybeAuthentication = authenticationRepository.findByMemberId(memberId); if (maybeAuthentication.isPresent()) { Authentication authentication = maybeAuthentication.get(); System.out.println("Authentication go!!"); } else { System.out.println("No memberProfile?"); } return member; }
Java
복사

Solution

-memberId를 통해서 해당 리포지터리에 새로운 쿼리구문을 추가하여 가져오는 중입니다.
→ 위의 방식 나쁘지 않습니다.
차라리 private 매서드를 하나 만들어서
acquireMemberProfile(), acquireAuthentication(), acquireMember() 형태로 구성했으면
가독성과 효율성을 동시에 두 마리 모두 잡을 수 있었을 것 같네요.

Issue