Spring RoadMap(69)
-
자바 ORM 표준 JPA 프로그래밍(11 - 마지막), 객체지향 쿼리 언어1 - 중급 문법
자바 ORM 표준 JPA 프로그래밍 강의의 마지막 포스트인 이 글에서는 JPA 실무에서 가장 빈번하게 마주치는 성능 문제인 N+1 문제의 해결책(페치 조인)과, 실수하면 데이터 정합성이 깨질 수 있는 벌크 연산 등 매우 중요한 내용들이 포함되어 있다.자바 ORM 표준 JPA 프로그래밍 - 기본편 - 11. 객체지향 쿼리 언어2 - 중급 문법지난 글에서는 JPQL의 기본적인 문법과 사용법에 대해 알아보았다. 이번 글에서는 실무에서 반드시 알아야 하는 JPQL의 중급 문법을 다룬다. 특히 JPA 성능 최적화의 핵심인 페치 조인(Fetch Join)은 면접에서도 자주 등장하는 중요 개념이니 반드시 숙지해야 한다.이번 글에서는 경로 표현식, 페치 조인, 다형성 쿼리, 엔티티 직접 사용, Named 쿼리, 그리고..
2026.01.02 -
자바 ORM 표준 JPA 프로그래밍(10), 객체지향 쿼리 언어1 - 기본 문법
지난 글에서는 JPA의 데이터 타입 분류인 값 타입(Value Type)에 대해 알아보았다. 엔티티 매핑도 배웠고, 연관관계도 맺었고, 데이터 타입도 이해했다. 이제 남은 것은 하나다. 바로 "원하는 데이터를 DB에서 어떻게 조회할 것인가?"이다. JPA를 사용하면 엔티티 객체를 중심으로 개발하게 된다. 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 하는데, 모든 DB 데이터를 객체로 변환해서 메모리에 올려두고 검색하는 것은 불가능하다. 결국 애플리케이션이 필요한 데이터만 DB에서 불러오려면 검색 조건이 포함된 SQL이 필요하다. 이번 글에서는 JPA가 제공하는 강력한 객체지향 쿼리 언어인 JPQL(Java Persistence Query Language)의 기본 문법에 대해 상세히 다..
2026.01.02 -
자바 ORM 표준 JPA 프로그래밍(9), 값 타입
지난 글에서는 JPA의 성능 최적화 핵심인 프록시와 연관관계 관리에 대해 다루었다. 무조건 지연 로딩을 사용하라는 원칙은 이제 머릿속에 확실히 박혔을 것이다. 이번 글에서는 JPA에서 데이터를 분류하는 또 다른 기준인 값 타입(Value Type)에 대해 알아본다. "그냥 변수 선언해서 쓰면 되는 거 아냐?"라고 생각할 수 있지만, JPA에서 엔티티와 값 타입을 명확히 구분하지 않으면 나중에 데이터를 추적할 수 없는 심각한 부작용(Side Effect)에 시달릴 수 있다.자바 ORM 표준 JPA 프로그래밍 - 기본편 - 9. 값 타입1. JPA의 데이터 타입 분류JPA는 데이터 타입을 크게 두 가지로 분류한다.1.1 엔티티 타입 (Entity Type)@Entity로 정의하는 객체다.데이터가 변해도 식별..
2026.01.01 -
자바 ORM 표준 JPA 프로그래밍(8), 프록시와 연관관계 관리
지난 글에서는 JPA의 고급 매핑인 상속 관계 매핑과 @MappedSuperclass에 대해 알아보았다. 이번 글에서는 JPA를 실무에서 사용할 때 성능 최적화와 직결되는 매우 중요한 개념들을 다룬다. 바로 프록시(Proxy)와 지연 로딩(Lazy Loading)이다. 또한 엔티티를 관리할 때 편리함을 제공하는 영속성 전이(CASCADE)와 고아 객체에 대해서도 깊이 있게 살펴본다. 이 부분은 JPA를 쓰면서 마주치는 쿼리 문제(N+1 문제 등)의 핵심 원인이 되는 곳이므로 반드시 완벽하게 이해하고 넘어가야 한다.자바 ORM 표준 JPA 프로그래밍 - 기본편 - 8. 프록시와 연관관계 관리1. 프록시 (Proxy)1.1 프록시가 왜 필요할까? 회원(Member)과 팀(Team)이 연관관계를 맺고 있다고..
2026.01.01 -
자바 ORM 표준 JPA 프로그래밍(7), 고급 매핑
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 7. 고급 매핑1. 상속관계 매핑객체는 '상속'이라는 개념이 있지만, 관계형 데이터베이스에는 상속이라는 개념이 없다. 그나마 가장 유사한 것이 슈퍼타입-서브타입 관계라는 모델링 기법이다. JPA의 상속관계 매핑은 바로 이 객체의 상속 구조와 DB의 슈퍼타입-서브타입 관계를 매핑하는 것이다. 슈퍼타입-서브타입 논리 모델을 실제 물리 테이블로 구현하는 방법은 크게 3가지가 있다.조인 전략 (Joined Strategy): 각각 테이블로 변환단일 테이블 전략 (Single Table Strategy): 통합 테이블로 변환구현 클래스마다 테이블 전략 (Table-per-class Strategy): 서브타입 테이블로 변환JPA는 이 3가지 방식을 어노테이션 설정..
2026.01.01 -
자바 ORM 표준 JPA 프로그래밍(6), 다양한 연관관계 매핑
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 6. 다양한 연관관계 매핑1. 연관관계 매핑 시 고려사항 3가지본격적인 매핑에 앞서, 매핑을 할 때 항상 머릿속에 그려야 할 3가지 기준이 있다.1.1 다중성 (Multiplicity)두 엔티티가 어떤 관계인지 파악해야 한다.다대일 (@ManyToOne): 가장 많이 쓴다. (예: 회원과 팀)일대다 (@OneToMany): 다대일의 반대다.일대일 (@OneToOne): 양쪽이 서로 하나씩만 가질 수 있다. (예: 주 테이블과 대상 테이블)다대다 (@ManyToMany): 실무에서는 쓰면 안 된다.1.2 단방향, 양방향테이블: 사실 테이블에는 방향이라는 개념이 없다. 외래 키 하나만 있으면 조인을 통해 양쪽으로 다 조회할 수 있다.객체: 참조용 필드가 있는..
2026.01.01