전체 글110 맛슐랭 - 맛집 리뷰 service 구현 (CRUD) 1. ReviewService 리뷰를 생성, 수정, 조회, 삭제 하기 위한 로직을 구현한 서비스이다. 리뷰와 이미지는 일대다 조인이기 때문에 dto로 정보를 받아오거나 반환할 경우 for문을 사용하여 처리하였다. 리뷰 등록 시 검증 메서드에서 BindingResult 객체를 통해 오류를 담아 html로 넘겨주었다. 코드 내 주석에 설명을 적어놓았기 때문에 자세한 설명은 생략한다. @Service @RequiredArgsConstructor public class ReviewService { private final ReviewRepository reviewRepository; private final UploadImageService uploadImageService; private final Place.. 2024. 3. 27. 맛슐랭 - 맛집 리뷰 생성을 위한 Repository 구현 맛집 리뷰를 등록하기 위해서는 음식점의 정보, 리뷰에 업로드된 이미지도 DB에 저장되어야 한다. 1. PlaceRepository 해당 장소가 이미 등록되어 있는지 확인하고 그 장소를 반환 받기 위해 위도, 좌표를 사용하였다. public interface PlaceRepository extends JpaRepository { // pos_x와 pos_y값이 모두 일치하는 장소가 있는지 확인 boolean existsByPosXAndPosY(String posX, String posY); // pos_x와 pos_y값이 모두 일치하는 장소 반환 Optional findByPosXAndPosY(String posX, String posY); } 2. UploadImageRepository UploadIma.. 2024. 3. 27. 맛슐랭 - 엔티티 등록 이전에 설계한 ERD를 토대로 엔티티를 구현했다. 1. Member 네이버나 카카오에서 닉네임을 변경하였을 경우 간편 로그인 시 동일하게 변경이 이루어지도록 하기 위해 update함수를 만들었다. 사용자의 권한을 확인하기 위해 getRoleKey함수도 만들었다. Role을 String 타입으로 db에 저장하기 위해 Enumtype.STRING을 명시했다. @Entity @Getter @NoArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String email; private String nickname; @Enumerated(EnumType... 2024. 3. 27. 맛슐랭 - 카카오 지도 API 사용하기 저번 간편 로그인 때 발급받은 자바스크립트 키로 카카오 지도 api를 사용할 수 있다. ( 지도 사용법 : https://apis.map.kakao.com/web/guide/ ) html 문서에 id가 map인 div태그를 넣고 아래 코드를 넣으면 화면에 지도가 띄워지는 걸 확인할 수 있다. 나는 부트 스트랩을 활용하여 메인 페이지를 조금 더 꾸며주었다. [메인페이지] 2024. 3. 27. 맛슐랭 - db 설계 맛집 리뷰를 구현하기 이전에 DB 설계부터 진행하였다. 엔티티 분석 member 간편 로그인 서버로부터 받은 email,nickname 정보 각 사용자의 권한을 담은 role 회원가입 시간을 담은 created_at 회원정보 수정 시간을 담은 last_modified_at wishlist 특정 회원이 특정 장소를 찜하였을 때 장소와 멤버를 저장하기 위해 만든 엔티티이다. review 맛집 리뷰를 담기위한 엔티티이다. eatFoods에는 먹은 음식들이 리스트 형태로 저장된다. 리뷰를 쓴 member의 id, 리뷰의 대상인 음식점의 id, 리뷰 관련 정보들이 저장된다. upload_image 리뷰에 들어가는 이미지들을 저장한다. 사용자가 업데이트 한 파일의 이름인 originalFilename 실제 서버에 .. 2024. 3. 27. Spring JPA - 페치조인 최적화 - intro - 두번째 프로젝트를 진행하면서 특정 멤버가 쓴 모든 리뷰를 조회하는 상황이 생겼다. 처음에는 단순히 Page findByMemberId(Long memberId, PageRequest pageRequest); 로 만들었는데 해당 로직을 실행해보니 n+1 문제가 터짐을 확인했다. => 인프런 김영한님의 jpa강의에서 배웠던 페치조인최적화를 사용했는데 이때 겪었던 문제에 대해 정리해보고자 한다. - 정리 - 1. 페치조인은 페치조인 코드를 사용한 쿼리를 직접 만들어주어야 한다. 직접 쿼리를 지정하면 Spring Data JPA는 해당 메소드의 이름을 분석하지 않고 사용자가 제공한 JPQL 쿼리를 사용한다. 따라서 @Query 어노테이션을 사용한 경우에는 메소드의 이름을 보고 자동으로 쿼리를 .. 2024. 3. 23. 이전 1 ··· 8 9 10 11 12 13 14 ··· 19 다음