QueryDSL의 페이징 카테시안 곱 문제 해결 방법 복잡한 일대다 연관관계를 가진 데이터를 페이징 처리할 때 어떤 어려움을 겪은 적이 있으신가요? 저는 실무에서 페이징을 처리하다 보면 목록을 조회할 때 단순하게 하나의 연관관계가 아니라 일대다의 연관관계를 한두 개가 아닌 여러 개를 같이 조회할 경우가 생기게 됬었습니다. 이때 평소와 같이 페이징을 구현했더니 결과는 제대로 나오지 않았습니다. 이유는 바로 1:N 관계에서 발생하는 카테시안 곱 문제 때문입니다. JPA를 사용한다면 다들 한번쯤 겪어볼 문제이기 때문에 해결하기 위한 전략과 팁을 공유하기 위해 작성했습니다. 카테시안 곱(Cartesian Product)이란? JPA에서의 카테시안 곱은 데이터베이스 쿼리 수행시 여러 테이블 간의 조인을 잘못 사용..
SpringBoot JWT 로그인 구현 가이드 이전 글들에 이어서 JWT와 Swagger를 활용한 JWT 인증 예제를 구현해 보겠습니다. 처음 JWT를 구현할 때는 조급하게 구현을 진행했지만, 이번에는 JWT가 어떻게 Spring Boot에 통합되고, 토큰을 어떻게 검증하고 발급하는지에 대한 내용을 보다 자세히 다루려고 합니다. 이번 글에서는 AccessToken과 RefreshToken을 활용하여 토큰을 발급하고, RefreshToken의 검증을 통해 AccessToken을 재발급하는 방법에 대해 작성해 보겠습니다. 사용자 인증 컨트롤러 구현 @RestController @RequestMapping("/accounts") @RequiredArgsConstructor public class Account..
SpringBoot Sequrity + JWT 구현 취업 전부터 실무까지 요즘 개발자라면 모두 사용하는 JWT는 구조 자체를 몰랐을 때 나에게 매우 어려운 과제였습니다. 인터넷에 어떤 블로그를 봐도 끝까지 완성 시킬 수 없었고, 회사 내에서 JWT를 자주 사용하다 보니 익숙해진 구조를 이제는 글로 작성해 보려고 합니다. 나의 깃허브에 들어가면 Database 정보만 제대로 입력하면 실행할 수 있도록 구성해 왔으니 참고 부탁드립니다! JWT 란? JWT(JSON Web Token)은 JSON 객체 인증에 필요한 정보들을 담은 키값들을 서명한 토큰입니다. JWT로 인증 (Authentication)과 권한(Authorization)의 방식을 구현할 수 있습니다. Security와 JWT간의 필요한 토큰 생성..