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() 형태로 구성했으면
가독성과 효율성을 동시에 두 마리 모두 잡을 수 있었을 것 같네요.