Java

Java/JPA

JPA 복잡한 쿼리 작성하기

Java Persistence API를 활용하여 DB에 복잡한 질의를 생성하는 경우는 보통여러 테이블을 조인하여 원하는 결과를 만들어야 할 때 입니다.  이때, 여러테이블을 조인하는 과정에서 N+1 문제를 해결하기 위해Fetch Join을 많이 쓰지만, 좀 더 구체적인 상황에서 Fetch Join 사용을 구분해보려고 합니다그래서 다음 2가지의 경우를 나누어 정리해 보고자 합니다.fetch join을 사용해야하는 적절한 경우fetch join을 사용할 수 없는 경우쿼리를 생성할때는 QueryDSL을 사용하였습니다. 1. Fetch Join은 무엇인가?JPA는 Entity를 조회할때 기본적으로 지연로딩(Lazy Loading)이 원칙입니다public class Board extends BaseEntity ..

Java/Spring

Spring Interceptor를 활용한 Jwt 유저 정보 추출

Json Web Token을 활용해 사용자를 인증하는 방식은 서버에 사용자의 상태를 저장하지 않기 때문에 stateless 합니다.또한 Jwt에는 사용자의 간단한 정보를 담을 수 있습니다.이 정보를 활용하기 위해서는 요청헤더에서 토큰을 얻고 토큰에서 사용자의 정보를 다음과 같이 추출할 수 있습니다. @Operation(summary = "회원이 작성한 게시물 목록") @GetMapping("wrote/boards") public RestResult boardListByMember(@RequestParam(defaultValue = "0") int pageNumber, @RequestParam(defaultValue..

Java

사용자가 여러번 클릭할 수 있는 버튼에 대한 요청을 보내는 시점 문제

안녕하세요 오늘은 그간 팀프로젝트를 하면서 겪었던 2번째 문제를 기록해두기 위해 왔습니다.바로 본론으로 들어가면 문제는 커뮤니티의 게시판에서 좋아요 기능에 대한 트러블 슈팅입니다. 문제 상황은 사용자가 한 번에 추천버튼을 여러 번 누르면 매번 서버에 요청을 보내기 때문에 서버에 불필요한 요청을 너무 많이 보내게 되고 과부하가 발생해실제 화면과 db에 저장된 좋아요가 일치하지 않는 모습을 보인다는 것이었습니다. 따라서 처음에는 JavaScript의 이벤트를 beforunload 시점에 요청을 보내도록 하려고 했습니다.let likeButton = $("#likeButton");let myLikeCount = parseInt($("#myLikeCount").text()); // 내 추천수(0 or 1)let..

Java/Spring

Server Side Rendering 방식의 웹 앱에서 JWT을 사용하는 SpringSecurity 적용의 어려움

그간 팀프로젝트를 하느라 바빠 오랜만에 글을 써봅니다.이번 주제는 팀프로젝트를 하는동안 만났던 문제점과 그 문제를 해결한 방법에대해 써볼까 합니다. 제가 네이버클라우드 캠프에서 팀원들과 했던 프로젝트는 SpringBoot와 Thymeleaf를 사용하는 Server Side Rendering 방식의 웹 어플리케이션이였습니다.서버사이드렌더링 방식은 Front-end와 Back-end가 구분되어 있는 구조가 아닌1. 서버측에서 필요한 데이터를 준비하고2. 해당 데이터를 Model 객체에 담아 템플릿 엔진을 사용해 HTML 파일에 데이터를 그려낸후,3. 클라이언트의 요청에 대한 응답으로 정적 파일(HTML, CSS, JAVASCRIPT)을 내려주는 방식을 말합니다.그림으로 나타내면 다음과 같죠이때, 문제가 있었..

chobo5
'Java' 카테고리의 글 목록 (2 Page)