목차 1. 엔티티 단건 조회 2. 엔티티 목록 조회 3. 컬렉션 조회 N + 1 JPA의 N + 1 문제는 즉시로딩과 지연로딩 두 경우 모두 발생할 수 있다. 즉시로딩은 JPQL 을 사용해 엔티티를 조회할 때 쿼리가 실행된 후 즉시로딩으로 연관 관계가 매핑된 엔티티를 조회하는 쿼리가 추가로 실행된다. 지연로딩은 엔티티를 조회할 때 연관 관계가 매핑된 엔티티는 프록시로 조회하지만 프록시의 필드에 접근할 때 해당 엔티티를 조회하는 쿼리가 추가로 실행된다. 다음은 지연로딩으로 매핑된 엔티티들의 연관 관계 종류에 따라 발생하는 N + 1 문제와 최적화 과정이다. 지연로딩은 JPQL로 엔티티를 조회해도 연관된 엔티티를 추가로 조회하지 않기 때문에 N + 1 문제가 발생하지 않는다. 하지만 엔티티의 목록을 조회할 ..
목차 1. 경로 표현식 2. 페치 조인 3. 다형성 쿼리 4. 엔티티 직접 사용 5. Named 쿼리 6. 벌크 연산 1. 경로 표현식 경로 표현식은 .(점)을 찍어 객체 그래프를 탐색하는 것이다. select m.username -> 상태 필드 from Member m join m.team t -> 단일 값 연관 필드 join m.orders o -> 컬렉션 값 연관 필드 where t.name = '팀A' 상태 필드(state field) 단순히 값을 저장하기 위한 필드(ex: m.username) select m.name, m.age from Member m 연관 필드(association field) 연관관계를 위한 필드 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티..
목차 1. JPQL 2. 기본 문법과 쿼리 API 3. 프로젝션 4. 페이징 5. 조인 6. 서브 쿼리 7. JPQL 타입 표현 8. 조건식 - CASE 식 9. JPQL 함수 1. JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발을 진행하는데 EntityManager.find()나 객체 그래프 탐색(a.get())으로 조회가 어려운 검색 쿼리를 작성할 때 JPQL을 사용한다. String jpql = "select m From Member m where m.name like ‘%hello%'"; List result = em.createQuery(jpql, Member.class) .getResultList(); JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 SQL과 문법 유..
목차 1. JPA의 데이터 타입 분류 2. 임베디드 타입(복합 값 타입) 3. 값 타입과 불변 객체 4. 값 타입의 비교 5. 값 타입 컬렉션 1. JPA의 데이터 타입 분류 1) 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 2) 값 타입 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 (1) 기본값 타입 자바 기본 타입(int, double) 래퍼 클래스(Integer, Long) String 항상 값을 복사하기 때문에 절대 공유되지 않는다. Integer같은 래퍼 클래스나 String 같은 특수한 클래스는 공유 가능한 객체이지만 변경되지 않는다. (2) 임베디드 타입(embedded type, 복합 값 타입) (3) 컬렉션 값 타입(c..
- Total
- Today
- Yesterday
- JPA
- Ubiquitous Language
- 스프링 카프카 컨슈머
- named query
- spring rest docs
- Git
- mockito
- 마이크로서비스 패턴
- 트랜잭셔널 아웃박스 패턴
- 폴링 발행기 패턴
- http
- 학습 테스트
- ATDD
- 도메인 모델링
- kafka
- clean code
- MySQL
- java8
- H2
- HTTP 헤더
- 이벤트 스토밍
- 스프링 예외 추상화
- Spring
- TDD
- Stream
- Spring Data JPA
- 육각형 아키텍처
- Spring Boot
- 클린코드
- 계층형 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |