web45 맛슐랭 - 엔티티 등록 이전에 설계한 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. 맛슐랭 - 스프링부트 OAuth2 로그인 구현 (소셜로그인,간편로그인) - intro - 저번 프로젝트에서 일반 회원가입&로그인을 구현해보았기 때문에 이번 프로젝트에서는 소셜로그인을 사용해보고자 한다. 국내에서 많이 사용하는 네이버와 카카오 로그인을 사용해볼 예정이다. OAuth2에 관해 알아햘 내용들은 2024.03.07 - [spring] - Spring Security (스프링 시큐리티) OAuth2 정리 1 에 정리해놓았다. 스프링부트에서 OAuth 2.0을 설정할 때, Spring Security는 인증 및 권한 부여를 담당하는 필터 및 프로세스를 구성한다. 따라서 스프링부트가 자동으로 authorization code를 요청하고 받아오는 작업부터 access token을 사용하여 사용자 정보에 접근하는 작업까지를 수행해준다. => 개발자는 복잡한 로직을 직접 구현.. 2024. 3. 20. HttpServletRequest, HttpServletResponse 생성 시점 & 사용이유 & 사용방법 HttpServletRequest 생성 시점 웹클라이언트(웹브라우저)로부터 서버로 요청이 들어오면 서버에서는 HttpServletRequest를 생성하여, 요청정보에 들어있는 path로 매핑된 서블릿에게 전달한다 (응답을 보낼 때 사용하기 위해 HttpServletResponse 객체도 생성해 함께 전달) HttpServletRequest 사용 이유 http 프로토콜의 request정보를 서블릿에게 전달하기 위해서 사용한다. 헤더정보, 파라미터, 쿠키 등의 정보를 읽을 수 있는 메소드를 가지고 있다. Body의 Stream을 읽어들이는 메소드를 가지고 있다. HttpServletResponse 사용 이유 요청을 보낸 클라이언트에게 content type,응답메세지 등 응답에 관련된 정보를 보내기 위해.. 2024. 3. 18. 이전 1 2 3 4 5 ··· 8 다음