전체 글 151

[ORM] JPA 성능 최적화: N+1 문제 해결하는 3가지 방법

JPA를 사용할 때 가장 자주 접하는 성능 이슈 중 하나가 N+1 문제입니다. 이 문제를 이해하고 해결하지 않으면 DB에 불필요한 쿼리가 과도하게 실행되어 성능이 급격히 저하될 수 있습니다. N+1 문제의 개념, 원인, 해결 방법까지 쉽게 정리해보겠습니다.📌 1. N+1 문제란?N+1 문제는 연관된 데이터를 조회할 때, 불필요한 추가 쿼리가 N번 실행되는 현상을 말합니다.즉, 1번의 조회 쿼리로 끝나야 할 작업이 N개의 추가 쿼리를 발생시켜 비효율적인 데이터 조회가 되는 것입니다.📌 예제 상황 (연관된 엔티티 조회)회사 시스템에서 부서(Department)와 직원(Employee)이 있다고 가정해봅시다.하나의 Department는 여러 Employee를 가질 수 있습니다. (1:N 관계)Departm..

[소고기] 야키니쿠 진야 송파본점

"한우 우설 소고기 무한리필 맛집😋"​서울 송파구 중대로25길 18 1층 101호영업시간월화수목금: 17:00-22:30 토일: 12:00-22:30라스트오더: 22:00☎0507-1407-1912 사진첩을 뒤져보다 갑자기 생각나서 써보는 야키니쿠 진야!_!여기는 너무너무x1000 맛있었다.食べ(타베): 먹다放題(호다이): 마음껏, 무제한飲み(노미): 마시다放題(호다이): 무제한으로 야키니쿠 프리미엄 뷔페코스 52,000원와규뱃살(업진살), 와규등심, 와규부채살, 안창살, 안심, 살치살, 한우암소 우설, 한우암소우설 갈비, 한우된장찌개, 육회 등노미호다이 1인 18,000원90분동안 주류와 음료를 무제한으로 사케, 와인, 하이볼, 소주, 생맥주 등 타베호다이 코스로 먹어따  가격대가 있지만 고기 종류도..

맛집탐험 2025.02.22

프로젝트 코드 리뷰: JPQL vs QueryDSL 최적화 및 리팩토링

ERPre v2 코드 리팩토링  기존 JPQL 를 사용했을때 장점 2가지>1. Fetch Join과 countQuery 활용 (N+1 문제 예방 및 페이징 최적화) @Query(value = "SELECT d FROM Dispatch d " + "JOIN FETCH d.order o " + "JOIN FETCH o.customer c " + "JOIN FETCH d.orderDetail od " + "JOIN FETCH od.product p " + "LEFT JOIN FETCH d.warehouse w " + "WHERE d.dispatchStatus = :dispatchStatus " + "AND o.orderHS..

[ORM] JPQL vs QueryDSL: 무엇이 더 나을까?

JPA 환경에서 데이터 조회를 수행하는 대표적인 방법으로 JPQL과 QueryDSL이 있다. 두 방식 모두 ORM을 통해 데이터베이스와 상호작용하지만 접근 방식과 활용 방법에서 차이를 보인다. 어떤 방식을 선택해야 할지 유지보수성, 성능, 확장성 측면에서 비교해 보자.📌 JPQL과 QueryDSL의 공통점✔ JPA 기반 ORM 지원 → 객체 중심으로 데이터 조회 가능✔ JPQL을 기반으로 동작 → 결국 QueryDSL도 JPQL을 생성하여 실행✔ N+1 문제 해결 가능 → JOIN FETCH(JPQL), fetchJoin()(QueryDSL)✔ 페이징 지원 → Pageable 활용 가능하지만, JOIN FETCH 사용 시 countQuery 별도 작성 필요📌 JPQL vs QueryDSL 차이점1️⃣..

JSP/Servlet 프로젝트와 React+Spring Boot 프로젝트 비교

웹 서버, 웹 컨테이너, 애플리케이션 서버, WAS 용어 정리 한 김에 JSP/Servlet 기반 프로젝트와 React + Spring Boot 프로젝트 비교해보려고 한다.1. JSP/Servlet 프로젝트 (전통적인 Java EE 웹 개발)🔹 주요 구성 요소웹 서버: Apache HTTP Server 또는 내장된 Tomcat 웹 서버웹 컨테이너: Tomcat, JBoss, WebLogic 등애플리케이션 서버: WebLogic, JBoss EAP (필요 시)WAS: Tomcat이 WAS 역할을 함 (Servlet/JSP 실행)🔹 동작 방식사용자가 브라우저에서 JSP 페이지 요청웹 서버(Apache 등)가 정적 리소스를 전달하거나, 동적 요청을 웹 컨테이너(Tomcat) 로 넘김웹 컨테이너가 Servl..

웹 서버, 웹 컨테이너, 애플리케이션 서버, WAS 차이점 정리

웹 개발을 하다 보면 웹 서버(Web Server), 웹 컨테이너(Web Container), 애플리케이션 서버(Application Server), 웹 애플리케이션 서버(WAS, Web Application Server) 등 비슷한 개념들이 혼용되어 사용된다. 헷갈려서 정리해보려고 한다. 웹서버와 WAS란?클라이언트와 서버가 인터넷을 통해 정보를 상호작용(정보 공유, 검색 등)을 할 수 있게 하는 서비스웹의 3요소:HTML(응답)HTTP(통신 방법)URL(요청하는 주소)💡 잠깐!먼저 생각해보면 좋은 것(면접velog.io 1. 웹 애플리케이션(Web Application)웹 애플리케이션은 사용자가 브라우저를 통해 접근하여 실행하는 프로그램을 의미한다.반대 개념은 데스크톱 애플리케이션으로, 이는 사용자..

개발인생/etc 2025.02.19

[eclipse] xml파일의 "Downloading external resources is disabled." 오류 해결

오류 발생오류 원인http://mybatis.org/dtd/mybatis-3-mapper.dtd 문제가 된 여기 링크로 접속하니까 아래 파일이 다운로드 되었다. 즉, url에 이상이 있는 것이 아니라 이클립스에서 dtd 형식의 파일을 제대로 다운받지 못하고 있었던 거임오류 해결Window > Preference > XML (Wild Web Developer)Download external resources like referenced DTD, XSD (첫번째 체크)가 해제되어 있다면 체크하고 Apply한다.  위에 방법으로 간단하게 해결했지만 사실 그렇게 간단하지는 않았다.아래 방법으로 했는데도 안됐음. 아래는 gpt가 알려준거니까 참고해보기 🔹 해결 방법 1: DTD 파일을 로컬에 저장하고 사용하기인..

개발인생/etc 2025.02.19

[JSP] Tomcat은 JSP와 Servlet 실행에 왜 필요할까?

Tomcat은 JSP와 Servlet을 실행하는 데 필수적인 웹 서버(서블릿 컨테이너)입니다.   1. Tomcat이 하는 역할Tomcat은 웹 서버 + 서블릿 컨테이너 역할을 합니다.📌 ① 웹 서버 역할HTTP 요청을 받고, HTML/CSS/JS 같은 정적 파일을 클라이언트(브라우저)로 반환index.html, style.css, script.js 같은 정적인 웹 페이지는 Apache, Nginx에서도 실행 가능📌 ② 서블릿 컨테이너 역할 (JSP & Servlet 실행)JSP와 Servlet을 실행하려면 서블릿 컨테이너가 필요한데, Tomcat이 이를 제공JSP는 내부적으로 Servlet으로 변환되어 실행되므로, Servlet이 실행되지 않으면 JSP도 실행될 수 없음**즉, Tomcat은 정적인..

[JSP] vs Servlet

✅ 1. JSP와 Servlet이 뭔가요?JSP와 Servlet은 둘 다 웹 서버에서 실행되는 Java 프로그램입니다.하지만 역할이 조금 다릅니다.개념설명사용 목적ServletJava 코드로만 작성된 웹 페이지 처리 클래스요청 처리 (예: 로그인, 데이터 처리)JSPHTML에 Java 코드를 포함할 수 있는 웹 페이지HTML 렌더링(예: 사용자 화면 표시) Servlet: 사용자의 요청을 처리하는 백엔드 로직 담당JSP: 사용자에게 보여줄 웹 페이지를 HTML과 함께 작성 ✅ 2. JSP와 Servlet이 어떻게 동작하나요?웹에서 사용자가 요청을 하면, JSP와 Servlet이 협력하여 웹 페이지를 만들어줍니다.📌 요청 & 응답 흐름1️⃣ 사용자가 브라우저에서 http://localhost:8080/l..