본문 바로가기
728x90

프로젝트5

[Project] 게시물 N+1 문제 해결기 (쿼리 40 -> 11 -> 1) 프로젝트 진행 중 게시물을 단순 조회를 테스트해보고 있었는데 쿼리가 하나가 아닌 우다닥 나오고 있었다. 사실 이게 나왔을때 좀 기뻣다. 배운 내용을 드디어 적용해볼 수 있겠구나! 유명한 JPA N+1 문제를 드디어 만난거다. 지금은 단순한 로직이라 빨리 찾을 수 있었다. 현재 board 하나를 단순히 조회하는데 위 사진처럼 긴 쿼리가 날아가는 것을 볼 수 있었다. 엄청  아주 긴 쿼리가 날아가는 것을 볼 수 있다.  40개의 쿼리가 단순 조회로 인해 발생하고 있었다. (2개는 처음 나오는 Hibernate) 이녀석이 왜이렇게 날아가나 찾아보니 아래와 같은 로직때문에 이런일이 발생하는 것을 볼 수 있었다.public static BoardResponse of(Board board) { retu.. 2025. 1. 31.
[Project] 좋아요 로직 반정규화 및 동시성 처리 프로젝트를 진행 중 우리는 인스타 좋아요처럼 눌렀다가 취소할 수 있는 그런 기능을 구현하고자 했다. 사실 처음에는 아주 쉬울거라고 생각했고 바로 기능 구현에 들어갔다. 사실 처음에는 그냥 board에서 likeIncrement, likeDecrement함수를 각각 구현해 단순히 Board 엔티티에서 감소, 증가 로직만을 작성하였었다.  public void likeIncrement() { this.likeCount++; } public void likeDecrement() { if (this.likeCount > 0) { this.likeCount--; } } 하지만 이렇게 되면 여러문제점이 발생하고 만다. 크게 2가지 문제가 발생.. 2025. 1. 31.
[Project] 세종대학교 auth & 예약 시스템 일단 세종대학교 auth를 왜 제작했는가? 아 잠시 그전에 만들게 된 계기는 현재 학과 예약시스템으로 인해 제작하는 상황이다. 예약 시스템은 보통 학교마다 다 있지 않나?라고 생각하지만 이 세미나실은 학과 학생들만 쓸 수 있는 세미나실이며, 여기서 미팅, 회의를 대학원생, 교수님들도 쓸 수 있게 열어둔 세미나실이라 학교측에서 따로 시스템을 만들기 어렵기에 구축이 안되있는 상황이었다.   그리고 현재는 아래 양식을 사용하여 직접 학과사무실에서 이름, 날짜, 사용목적 등을 적고 사용하는 방식이었다. 그로인해 학생, 교수님들 불편함을 느끼고 사이트로 만들자는 취지였다.  프로젝트를 진행 중 가장 큰 어려움을 겪은 부분은 예약시스템에서 어떻게 이용자가 학생인지 외부인인지, 그 해당학과 사람인지를 구분해야되는 문.. 2025. 1. 17.
[Project] Multipart/form 파일, Dto 동시 요청 시 발생 에러 프론트측이 남긴 에러를 보니 분명 잘 코드를 작성한거같은데 500에러가 발생하고 있었다. 실제로 테스트를 해보니 다음과 같은 에러가 발생하고 있었다. application/octet-stream?? 처음 들어봤고 어떻게 생긴 에러인지 알 수가 없었다. 우선 에러가 나는 코드를 봐보자 멀티파트로 받아서 dto와 여러파일들을 저장하는 로직이다. 이 코드말고 multipartform을 적용한 모든 곳에서 발생하고 있었다. 근데 갑자기 왜 application/octet-stream을 지원하지 않는다는 에러가 나올까? gpt선생님께 물어보자 정리하자면 지금 적용하고 있는 multipart/form은 다음과 같은 특징이 있다. multipart/form-data특징데이터를 여러 부분으로 나누어 전송합니다.각 부분.. 2025. 1. 16.
728x90