JPA 6

백엔드 개발자 기술 면접 완벽 대비 - Spring/JPA/DB/인프라 핵심 질문 50선

들어가며"면접 준비를 어디서부터 해야 할지 모르겠어요." 이직을 준비하는 3~7년차 백엔드 개발자들이 가장 많이 하는 고민입니다. CS 전공 지식부터 Spring, JPA, DB, 인프라까지 범위가 너무 넓고, 어디까지 깊게 공부해야 하는지 감이 잡히지 않습니다. 특히 미드 레벨 이상에서는 단순 암기가 아니라 "왜"와 "어떻게"를 설명할 수 있어야 합니다.이 글에서는 실제 면접에서 자주 출제되는 50개 핵심 질문을 카테고리별로 정리하고, 각 답변을 "결론 → 이유 → 예시" 3단 구조로 구성했습니다. 면접관이 기대하는 답변 포인트와 이어질 수 있는 꼬리 질문도 함께 다루겠습니다.Java 핵심 (10문)Q1. JVM 메모리 구조를 설명해주세요.결론: JVM 메모리는 크게 Heap, Stack, Method..

CS 2026.04.14

JPA 성능 최적화 실전 - 벌크 연산부터 2차 캐시까지

들어가며JPA는 생산성 높은 ORM이지만, 제대로 된 최적화 없이 사용하면 심각한 성능 문제가 발생합니다. N+1 문제, 불필요한 더티 체킹, 비효율적인 벌크 처리 등은 실무에서 빈번히 마주치는 이슈입니다. 이 글에서는 JPA 성능 최적화의 핵심 기법들을 Before/After 비교와 함께 실전 수준으로 정리합니다.1. JPQL 벌크 연산 (UPDATE/DELETE)엔티티를 하나씩 수정하면 변경 감지(dirty checking)가 각각 발생하여 UPDATE 쿼리가 N번 실행됩니다. 벌크 연산을 사용하면 단일 쿼리로 처리할 수 있습니다.Before: 엔티티 하나씩 수정 (N번의 UPDATE)@Transactionalpublic void deactivateInactiveUsers(LocalDateTime t..

JPA 2026.04.02

트랜잭션 격리 수준과 동시성 제어 - 실무에서 겪는 문제들

들어가며데이터베이스 트랜잭션은 데이터 무결성의 근간입니다. 하지만 동시에 수많은 요청이 들어오는 실무 환경에서는 트랜잭션 격리 수준에 따라 예상치 못한 데이터 이상 현상이 발생합니다. 이 글에서는 4가지 트랜잭션 격리 수준, 각 수준에서 발생할 수 있는 문제, 그리고 낙관적/비관적 락과 MVCC까지 실무에서 반드시 알아야 할 동시성 제어 기법을 체계적으로 정리합니다.1. 트랜잭션 격리 수준의 이해SQL 표준은 4가지 격리 수준을 정의하며, 높은 격리 수준일수록 데이터 일관성은 좋아지지만 동시성(성능)은 떨어집니다.READ UNCOMMITTED - 가장 낮은 격리 수준다른 트랜잭션이 커밋하지 않은 데이터를 읽을 수 있습니다. Dirty Read가 발생하며, 실무에서는 거의 사용하지 않습니다.-- 트랜잭션 ..

Database 2026.03.31

QueryDSL 실전 가이드 - 동적 쿼리부터 페이징까지

왜 QueryDSL인가?Spring Data JPA는 간단한 CRUD 쿼리에는 매우 강력하지만, 복잡한 동적 쿼리를 작성하기에는 한계가 있습니다. JPQL은 문자열 기반이라 컴파일 시점에 오류를 잡을 수 없고, Criteria API는 코드가 너무 복잡해 가독성이 떨어집니다. QueryDSL은 타입 안전한 자바 코드로 쿼리를 작성할 수 있게 해주며, 특히 동적 쿼리 작성에 탁월한 성능을 발휘합니다.1. QueryDSL 설정 (Spring Boot 3.x 기준)Spring Boot 3.x(Jakarta EE) 기준으로 QueryDSL 설정 방법을 안내합니다.Gradle 설정 (build.gradle)plugins { id 'java' id 'org.springframework.boot' vers..

JPA 2026.03.26

JPA 영속성 컨텍스트 완벽 이해 - 1차 캐시부터 변경 감지까지

영속성 컨텍스트란?JPA에서 가장 핵심적이면서도 이해하기 어려운 개념이 바로 영속성 컨텍스트(Persistence Context)입니다. 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 엔티티 객체를 관리하는 논리적인 공간입니다. EntityManager를 통해 엔티티를 영속성 컨텍스트에 저장하거나 조회하면, JPA는 다양한 최적화 기법을 자동으로 적용합니다.// EntityManager를 통해 영속성 컨텍스트에 접근@PersistenceContextprivate EntityManager em;// 엔티티를 영속성 컨텍스트에 저장em.persist(member);// 영속성 컨텍스트에서 조회Member findMember = em.find(Member.cl..

JPA 2026.03.26

JPA N+1 문제 완벽 정리 - 원인부터 해결까지 실무 가이드

들어가며JPA를 사용하는 백엔드 개발자라면 한 번쯤은 마주치게 되는 문제가 있습니다. 바로 N+1 문제입니다. 분명 하나의 쿼리로 끝날 것 같았는데, 콘솔 로그를 열어보면 수십, 수백 개의 쿼리가 쏟아지는 경험을 해보셨을 겁니다. 이 글에서는 N+1 문제의 원인을 정확히 이해하고, 실무에서 바로 적용할 수 있는 해결법을 정리하겠습니다.1. N+1 문제란 무엇인가N+1 문제는 연관 관계가 설정된 엔티티를 조회할 때, 1번의 쿼리로 N개의 엔티티를 가져온 뒤, 각 엔티티의 연관된 데이터를 가져오기 위해 추가로 N번의 쿼리가 실행되는 현상입니다. 총 1 + N번의 쿼리가 발생하기 때문에 N+1 문제라고 부릅니다.간단한 예시로 이해하기팀(Team)과 회원(Member)이 일대다 관계라고 가정하겠습니다.@Enti..

JPA 2026.03.24