본문 바로가기

개발18

[Field-Passer 프로젝트] Spring Data JPA에서 NativeQuery로 기간 검색하고 DTO로 값 받기 오늘 하고 싶었던 건 아주 사소했습니다. 회원의 가입 일자를 기준으로 기간 검색을 해서 특정 기간에 신규 가입한 회원이 몇 명인지 알아내고 싶었어요. 정말 사소한 소원이었습니다. 근데 이게 이렇게 오래 걸릴 줄은 몰랐어요. 1. Member Entity @AllArgsConstructor @NoArgsConstructor @Getter @Builder @Entity @Table(name = "MEMBER") public class Member { . . . @Column(name = "SIGNUP_DATE") private LocalDateTime signUpDate; . . . } 2. Controller @GetMapping("/admin/membes/new") public PeriodMemberVO.. 2023. 2. 5.
[Field-Passer 프로젝트] 쿼리 최적화 (N + 1 문제 해결하기) 뇌 뺴고 코딩 하다가 N + 1 문제가 발생하는 걸 알아차려서 해결하는 방법을 써보겠다. 회원 명단을 가져오는 API를 만들고 있었는데 쿼리를 보니까 N + 1 문제가 발생하고 있는 것을 깨달았다. ================= 1 : 회원 명단 가져오기 ================= Hibernate: select member0_.id as id1_4_, member0_.authority as authorit2_4_, member0_.delete_check as delete_c3_4_, member0_.email as email4_4_, member0_.membername as memberna5_4_, member0_.password as password6_4_, member0_.privilege .. 2023. 2. 4.
[Field-Passer 프로젝트] Spring Data JPA 페이징 처리하기 프론트엔드 쪽에서 회원 목록을 조회하는 API에 대해 한 페이지에 데이터 10개씩 페이징해서 결과를 달라는 요청을 했다. 그래서 처음으로 데이터 페이징 기능 구현한 겸 글을 써본다. 1. Controller @GetMapping("/admin/members") public MemberListVO lookUpMembers(@RequestParam(name = "page") int page) { try { return adminService.lookUpmembers(page); } catch (Exception e) { return MemberListVO.builder() .resultCode(e.getMessage()) .build(); } } 이름을 lookuUpmembers으로 했는데 지금 보니까 이름.. 2023. 2. 3.
[Field-Passer 프로젝트] SpringBoot 로그인 시 예외 처리하기 로그인 기능 구현이 생각보다 시간이 오래 걸렸다. 사실 기능 구현만 하는 건 쉬웠는데 예외처리도 하고 완성도를 높이려다 보니 부가적으로 할 것이 많았다. 처음 구현한 것 public AdminLoginVO adminLogin(AdminLoginRequestDTO admin, HttpSession session) { //회원 존재 확인 if (memberRepository.findAdminByEmail(admin.getEmail()).isPresent()) { Member member = memberRepository.findAdminByEmail(admin.getEmail()).get(); //비밀번호 일치 확인 if (member.getPassword().equals(admin.getPassword().. 2023. 1. 30.