JPA N+1 문제를 @EntityGraph로 해결해보자 N+1 문제란N+1 문제는 JPA 쓸 때 자주 마주치는 성능 이슈다. 연관 관계가 있는 엔티티를 조회할 때 추가 쿼리가 잘데없이 더 나가는 현상이다. 특히 컬렉션 조회할 때 더 자주 발생한다.예를 들어보자. 게시글 10개를 조회하는데 각 게시글마다 작성자 정보를 가져와야 한다고 하면처음에 게시글 목록 가져오는 쿼리 1번각 게시글의 작성자 정보 가져오는 쿼리 10번 이렇게 총 11번의 쿼리가 실행되는 현상을 N+1 문제라고 한다.Fetch Join으로 페이징처리 할 때의 한계Fetch Join보통은 Fetch Join으로 다음과 같이 해결하는 방법을 쓴다. @Query("SELECT p FROM Post p JOIN FETCH p.author") L..
카카오페이 api를 이용해서 결제 기능 구현하기 프로젝트 진행 중 우리 서비스에 포인트 결제 기능이 있는데 이걸 구현하기 위해 카카오페이 api를 사용하게되었다. 실제 결제를 구현하려면 사업자 등록에 여러 거쳐야되는 절차가 필요하여 우선 테스트 결제라도 구현하는 방향으로 결정했다. 먼저 아래 링크에 들어가 카카오페이 디벨로퍼스에 가입하자. https://developers.kakaopay.com/ 카카오페이 | 개발자센터새로운 기회와 가치를 함께 만들어봐요developers.kakaopay.com 가입한 다음, 위와 같이 애플리케이션을 생성해준다. 애플리케이션 정보에 들어오면 위와같은 화면이 뜨게되는데, 여기서 우리가 테스트 결제용으로 사용할 secret key는 빨간색으로 칠해진 Secr..
카카오테크캠퍼스 STEP2 3주차 회고이번 3주차의 주제는 기존 JDBCTemplate를 쓰던 코드를 JPA 로 변환하는 것이다. JPA? JPA는 자바 진영에서 ORM(Object-Relational-Mapping) 기술 표준으로 사용되는 인터페이스의 모음.간략하게 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것.https://dbjh.tistory.com/77 [Spring JPA] JPA 란?이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이dbjh.tistory.com 1단계 - 엔티티 ..
카카오테크캠퍼스 STEP2 2주차 회고 이번 2주차의 주제는 카카오톡 선물하기 기능 중 위시 리스트 기능 구현이다. 1주차에서는 JdbcTemplate와 H2 Database를 이용하여 각 상품들을 CRUD 할 수 있는 관리자 페이지를 구현하였다. 2주차의 기능 요구사항은 여기에 덧붙혀 유효성 검사,회원가입 및 로그인,위시 리스트 기능을 추가하는 것이다. 1단계 상품을 추가하거나 수정하는 경우, 클라이언트로부터 잘못된 값이 전달될 수 있기 때문에 유효성 검사를 통하여 어떤 부분이 잘못되었는지 알려주는 기능을 추가해준다. 유효성 검사는 다음과 같은 조건을 따른다.상품 이름은 공백을 포함하여 최대 15자까지 입력할 수 있다.특수 문자가능: ( ), [ ], +, -, &, /, _그 외 특수 문자 사용..