본문 바로가기

반응형

분류 전체보기

(207) GITHUB 방명록
[JPA] N+1 문제와 Query 성능 개선 (Fetch Join) 개발/Spring&JPA / 2023. 5. 11. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 JPA에서 발생하는 N+1 문제에 대해서 알아보도록 하겠습니다. 이 문제는 JPA를 사용할 때 데이터베이스 쿼리를 최적화하지 않아서 발생하는 성능 이슈입니다. 아마 우리는 자주 겪었을 텐데요. 인지하지 못한 채 지나쳤을 수도 있습니다. 한 가지 질문을 해보겠습니다. :) 웹 애플리케이션을 구현하면서, 콘솔에 SQL 쿼리가 본인 생각과 다르게 많은 양이 나간 적이 있을까요? 가령 하나의 데이터를 요청했지만, 2~3개 그 이상의 SQL 쿼리가 던져지는 것처럼 말입니다. (아니면 의문을 가져본 적이 없었나요? 🤣) 이 질문은 N+1 문제와 관련이 있습니다. 이제 이 문제가 무엇이며, 어떠한 해결 방법이 있는지 알아보겠습니다. N+1 문제란? JPA에서 N+1..
[JPA] 도메인 클래스 컨버터 사용하기 개발/Spring&JPA / 2023. 4. 20. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 Spring Data JPA에서 제공하는 도메인 클래스 컨버터에 대해서 알아보겠습니다. 도메인 클래스 컨버터란? 도메인 클래스 컨버터는 Spring Data JPA에서 제공하는 클래스입니다. 해당 클래스는 엔티티의 ID를 엔티티로 변환하는 기능을 수행합니다. 따라서 컨트롤러에서 파라미터로 받는 ID를 엔티티로 바인딩하여 바로 객체로 받아 사용할 수 있습니다. 도메인 클래스 컨버터 사용 전 아래 이미지의 코드는 회원 Rest 컨트롤러입니다. 그 안에는 Get 메서드의 회원 관련된 API가 있습니다. 이 API는 Path 파라미터로 사용자의 ID를 받고, 해당 사용자의 닉네임을 변경한 뒤 응답 메시지를 전송합니다. (보통 트랜잭션은 서비스 계층에서 처리되지..
[트러블 슈팅] '채식이들' 메인 페이지-제품 출력 에러 해결(java.lang.NullPointerException) 개발/Programming / 2023. 4. 16. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 채식이들 쇼핑 서비스에서 발생했던 에러와 해결 과정을 포스팅하도록 하겠습니다. '채식이들' 쇼핑 서비스는 2022년 9월에 협업 프로젝트로 개발했던 서비스입니다. 프로젝트를 진행할 당시에는 에러 없이 성공적으로 배포했다고 생각했습니다. 하지만 웹 사이트에 들어갔을 때, 제품이 출력되어야 하는 메인 페이지에서 불규칙적으로 전체 제품이 출력되지 않는 문제가 발생했었습니다. 문제를 인지하고, 몇 번을 테스트했을 때 로그인 이전에 기능들이 정상적으로 동작하지 않는 것을 확인했습니다. 처음 문제를 접했을 때는 'AWS 서버나 가비아의 저렴한 서비스를 이용한 것이 원인인가?'라는 안일한 생각으로 크게 신경 쓰지 않았습니다. 정말 바보 같은 생각이었습니다. 그 이후..
[JPA] @Transactional과 JPA의 플러시와 변경 감지(Dirty Checking) 개발/Spring&JPA / 2023. 4. 8. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘 다룰 주제는 스프링과 JPA를 다루는 개발자 혹은 백엔드 개발자에게 중요한 내용이 될 수 있겠다고 예상합니다. 그 이유는 실제로 개발을 진행하면서 많이 접하게 되는 개념이기 때문입니다. 저는 이번 내용에 대해서 분석하다 보니, JPA와 트랜잭션에 대해서 보다 더 알게 된 것 같아 굉장히 즐거웠습니다. 오늘 내용을 이해하고, 함께 성장하는 개발자가 되면 좋겠습니다. 설명 전에 가볍게 돌발 퀴즈로 시작하도록 하겠습니다. 내용이 다소 길더라도 천천히 끝까지 읽어주세요! 현재 철수는 [모임 관리 서비스] 개발을 진행하던 중, 모임 생성 기능을 구현하려고 합니다. 해당 기능의 요구사항은 아래와 같습니다. * 모임 생성 기능 요구사항 1) 서비스의 회원이 모임에 필..
[스프링] 'JavaMailSender'를 통한 이메일 발송 기능 구현 (Gmail SMPT) 개발/Spring&JPA / 2023. 3. 23. 지난 포스팅 해당 포스팅에서는 Gmail SMPT를 활용합니다. 아직 Gmail SMPT 설정 방법을 모르신다면, 아래 게시글을 읽어주세요. 2023.03.21 - [DEVELOPER/Programming] - [SMTP] 메일 전송을 위한, Google Gmail SMTP 설정 [SMTP] 메일 전송을 위한, Google Gmail SMTP 설정 안녕하세요😎 백엔드 개발자 제임스입니다 :) 최근에 스프링 부트로 웹을 개발하던 중 인증 메일 전송 기능을 구현하게 되었습니다. 항상 웹에서 회원가입을 진행할 때마다 받게 되는 인증 메 kang-james.tistory.com 안녕하세요😎 백엔드 개발자 제임스입니다 :) 오늘은 [스프링 부트에서 Email 전송 기능을 구현하는 방법]을 알아보도록 하겠습니다. ..
[SMTP] 메일 전송을 위한, Google Gmail SMTP 설정 개발/Programming / 2023. 3. 21. 안녕하세요😎 백엔드 개발자 제임스입니다 :) 최근에 스프링 부트로 웹을 개발하던 중 인증 메일 전송 기능을 구현하게 되었습니다. 항상 웹에서 회원가입을 진행할 때마다 받게 되는 인증 메일을 보면서, 구현 방법이 궁금했었습니다. 동시에 직접 구현해보고 싶다는 생각이 들었는데요. 이번에 기회가 되면서 자세하게 알 수 있었습니다. 오늘 포스팅과 다음 이어질 포스팅은 이메일 전송 기능을 구현한 방법에 대해서 정리하도록 하겠습니다. 먼저 오늘은 메일 전송을 위한 SMTP와 Gmail SMTP 설정 방법을 알아보도록 하겠습니다. SMTP 란? SMTP(Simple Mail Transfer Protocol)는 단순 전자우편 전송 프로토콜로 네트워크를 통해 전자우편(Email)을 전송하는 기술입니다. 해당 기술을 이용..

반응형