[JPA] N+1 문제 개선
·
Spring
JPA에서 N+1 문제란?요청이 1개의 쿼리로 처리되기를 기대했는데 N개의 추가 쿼리가 발생하는 현상즉, 1번의 쿼리로 N개의 데이터를 조회한 후 각각에 대해 추가로 1번씩 쿼리를 실행하는 문제. 결과적으로는 1 + N번의 쿼리가 실행된다.현상 분석 전 JPA의 핵심개념영속성 컨텍스트(Persistence Context): 엔티티를 관리하는 메모리 공간프록시 객체(Proxy): 실제 객체 대신 사용하는 가짜 객체지연 로딩(Lazy Loading): 필요할 때까지 데이터를 조회하지 않는 전략왜 N+1 쿼리가 발생하는가?JPA가 문제를 일으키는 근본적인 이유는 '관계를 맺고 있는 엔티티에 대한 조회 시점을 최적화' 하려는 시도 때문사용하는 Fetch 전략은 3가지가 있다. EAGER Loading, LAZY..
Spring Boot 게시판 개발, 핵심 어노테이션 정리
·
Spring
Spring Boot 기반으로 웹 애플리케이션을 개발할 때 반복적으로 사용되는 어노테이션들이 있으며, 각 계층(Layer)에서의 역할과 용도를 명확히 이해하는 것은 중요하다.게시판 프로젝트를 기준으로, 각 계층에서 필수적으로 사용되는 어노테이션들을 그 역할과 함께 기술한다.1. 스프링 부트 시작과 설정을 위한 어노테이션애플리케이션의 구동과 전반적인 설정을 담당하는 기본 어노테이션이다.@SpringBootApplication: 스프링 부트 프로젝트의 시작과 핵심 설정을 담당하는 어노테이션이다. 이 어노테이션은 자동 설정(@EnableAutoConfiguration), 컴포넌트 스캔(@ComponentScan) 등의 기능을 포함하고 있어, 개발자가 복잡한 초기 설정 없이 애플리케이션 개발에 집중할 수 있도록..
View 환경설정: Thymeleaf 알아보기
·
Spring
View 환경설정: Thymeleaf 알아보기백엔드 API 서버는 어느 정도 준비가 되었으니, 이제 사용자가 마주할 화면, 즉 뷰(View)를 설정할 차례다. Spring Boot와 함께 사용할 뷰 기술로는 여러 가지가 있지만, 이번에 학습하고 정리해 볼 기술은 타임리프(Thymeleaf)이다.Thymeleaf란?Thymeleaf는 서버 사이드 자바 템플릿 엔진이다. 서버에서 동적인 데이터를 HTML에 결합하여 완성된 웹 페이지를 만들어주는 역할을 한다.가장 인상 깊었던 장점은 내추럴 템플릿(Natural Template)이라는 것인데, 이게 뭐냐면 Thymeleaf 문법(th:*)이 포함된 HTML 파일이라도 그 자체로 HTML 문법을 완벽하게 지킨다는 점이다. 덕분에 웹 디자이너가 백엔드 서버 없이도..
프로젝트 환경설정
·
Spring
프로젝트 생성스프링 부트 스타터 (https://start.spring.io)쉽게 프로젝트를 만들 수 있음.project✅ Gradle - GroovyGradle - KotlinMavenMetadata // 의미하는 바 확인하기Group: jpabookArtifact: jpashopDependencies(의존관계)검색해서 원하는 의존성을 추가해준다.Spring Web (구 Spring Web Starter): RESTful API, Tomcat 컨테이너로 빌드Thymeleaf: 모던 서버사이드 자바 템플릿Spring Data JPA: 유틸성 라이브러리H2 Database: 개발 또는 테스트에 특화된 데이터베이스. MySQL는 환경설정시 까다로운데, h2는 간단하게 내부에서 구동가능Lombok: 반복코드를..