본문 바로가기

💖 Java/Spring Data JPA

(85)
[ StudyOlle ] 에러 핸들러 및 뷰 추가 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 현재 StudyOlle 프로젝트에서 잘못된 요청 ( 없는 스터디 조회, 없는 사용자 프로필 조회, 허용하지 않는 요청 시도 등)이 들어왔을 때 Error가 발생하면서 SpringBoot가 제공하는 Whitelabel이 뜨는데 이때 발생하는 error들의 로그를 기록하고, 직접 만든 Error 페이지로 이동하도록 만들어 주려고 한다! 💭 에러 핸들러 만들기 - ExceptionAdvice ✔ @ControllerAdvice : 모든 Controller에서 발생하는 에러를 잡아서 처리할 수 있도록 도와주는 어노테이션 ✔ @ExceptionHandler : @Controller, @RestCo..
[ StudyOlle ] 로그인 후 첫 페이지 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 저번 포스팅에서는 로그인 전 첫 페이지를 구현했다면, 이번 포스팅에선 로그인 후 첫 페이지를 구현해보자! 로그인 후 첫 페이지는 1. 관심 있는 스터디 주제 2. 주요 활동 지역 3. 참석할 모임 리스트 4. 나의 주요 활동 지역과 관심 주제와 관련된 스터디 목록 ( Tag와 Zone은 && 조건, 최대 9개까지만 출력) 5. 관리중인 스터디 목록 (최대 5개까지만) 6. 참여중인 스터디 목록 (최대 5개까지만) 이렇게 여섯개를 한 페이지에 나타내 보려고 한다. 이 화면을 로딩할 때 N+1 문제가 생기지 않도록 1. Account정보 & tags & zones 가 담긴 Query 2. 참..
[ StudyOlle ] 로그인 전 첫 페이지 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 이번 포스팅에선 로그인하지 않은 User가 방문했을 때 보이는 첫 화면을 만들어 보려고 한다! 로그인 전 첫 페이지에는 회원 가입 버튼과 최근 Study 9개가 보이도록 구현할 예정이다! ( 단, 공개한 Study && 아직 종료하지 않은 Study 만 포함된다 ) 🛸 로그인 전 첫 페이지 Server 구현 1. MainController ✔ account가 null인 경우에는 findFirst9ByPublishedAndClosedOrderByPublishedDateTimeDesc 메소드를 실행시켜 얻은 결과를 model에 담아 view로 보내준다. -> 최근데 만든 Study 중 공개된..
[ StudyOlle ] 검색(4) - 검색 뷰 개선 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 이번 포스팅에선 이전에 구현해둔 Search + paging 기능에 Pagination을 넣어주고, search 결과물에 정렬 기준 두 가지 넣어주기, keyword에 하이라이팅 해주는 것까지 구현해보려고 한다! 💖 Pagination 추가 - search.html ✔ Bootstrap에서 pagination을 찾아 search 페이지에 추가해준다 ✔ studyPage안의 hasPrevious(), hasNext() 함수를 사용해서 이전 페이지가 없으면 Previous를 disabled 상태로 만들고, 이후 페이지가 없으면 Next 버튼을 disabled 상태로 만들어준다. ✔ Tymel..
[ StudyOlle ] 검색(3) - 페이징 적용 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 앞선 포스팅에서 구현한 기본 검색 기능에 페이징 기능을 추가해보자! 🥕 데이터 넣기 페이징이 잘 적용되는지 알기 위해서는 데이터가 많이 있어야 하기 때문에 DB에 테스트용 데이터를 넣어주자. - StudyController ✔ /study/data 링크로 접속하면, service의 generateTestStudies를 통해 test용 Study 데이터를 만들 수 있게 해 준다. - StudyService ✔ for문을 통해 study 만드는 과정을 30번 반복되도록 만들어준다. ✔ randomValue를 만들어 테스트용 study의 title과 path에 사용해준다. ✔ Study를 만들..
[ StudyOlle ] 검색(2) - N + 1 문제 해결 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 검색 기능을 구현했던 저번 포스팅에서 이어지는 내용으로 검색 기능은 잘 작동하지만, 검색할 때 발생하는 Query를 살펴보면 N + 1 문제가 발생하는 것을 볼 수 있다. 예를 들어 '성남'에서 진행되는 Study를 검색했을 때 결과는 총 2개의 study다. (아래 그림 참조) 이때 발생되는 Query문을 예상해보면 이렇게 두 가지만 존재해야 맞는데 1. Notification 조회( 페이지 상단에서 알림 여부를 알기 위한 조회 ) 2. Study 검색 조회 사실상 이때 발생되는 Query 살펴보면 총 8번의 Query문이 실행된다. 1. QueryDSL로 만들었던 전체 Study 검색..
[ StudyOlle ] 검색(1) - 검색 기능 구현 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 이번 포스팅에서는 검색 기능을 구현해보려고 한다! ( QueryDSL을 사용해서 검색 기능을 구현할 예정 ) 정말 간단하게 keyword만 입력했을 때 공개된 study만 검색 되어야하고, keyword가 study 제목에 있거나 tag나 zone에 겹치는 단어가 있을 때 결과로 출력되도록 만들어주면 된다! 그리고 화면에 보여줄 study의 정보는 - 스터디 이름 - 짧은 소개 - 태그 - 지역 - 멤버 수 - 스터디 공개 일시 이렇게만 보여주면 된다. 이제 하나씩 단계별로 구현해보자! 👻 검색 기능 구현 (Server) 검색 기능은 Repository에 메소드를 만들어 Query를 검색..
[ StudyOlle ] 알림(7) - 모임 관련 알림 백기선 강사님의 '스프링과 JPA 기반 웹 애플리케이션 개발' 강의를 수강 후 공부하며 작성한 포스팅입니다. 😁 목표 이번 포스팅에서는 모임과 관련된 알림을 처리해보자! 우선 앞선 포스팅에서 구현했던 StudyUpdateEvent에 모임과 관련된 사항을 추가해줘야 한다. - 새 모임 추가 알림 - 모임 정보 수정 - 모임 취소 그리고, 모임 참가 신청을 했을 때 참여 여부 결과도 알림으로 받아야 한다. - 모임 참가 신청 수락 - 모임 참가 신청 거절 이렇게 다섯 가지 이벤트 발생 처리를 추가로 구현해보자😀 🌱 StudyUpdateEvent 1. EventService studyUpdateEvent에 원래는 study 소개 수정 & study 삭제 & study 팀원 모집 시작/마감 3가지의 이벤트만 발..