목차 1. 엔티티 단건 조회 2. 엔티티 목록 조회 3. 컬렉션 조회 N + 1 JPA의 N + 1 문제는 즉시로딩과 지연로딩 두 경우 모두 발생할 수 있다. 즉시로딩은 JPQL 을 사용해 엔티티를 조회할 때 쿼리가 실행된 후 즉시로딩으로 연관 관계가 매핑된 엔티티를 조회하는 쿼리가 추가로 실행된다. 지연로딩은 엔티티를 조회할 때 연관 관계가 매핑된 엔티티는 프록시로 조회하지만 프록시의 필드에 접근할 때 해당 엔티티를 조회하는 쿼리가 추가로 실행된다. 다음은 지연로딩으로 매핑된 엔티티들의 연관 관계 종류에 따라 발생하는 N + 1 문제와 최적화 과정이다. 지연로딩은 JPQL로 엔티티를 조회해도 연관된 엔티티를 추가로 조회하지 않기 때문에 N + 1 문제가 발생하지 않는다. 하지만 엔티티의 목록을 조회할 ..
1. 다대일(ManyToOne) 이전 글에서 정리한 내용과 동일 [JPA] 3. 연관관계 매핑 2. 일대다(OneToMany) 1) 일대다 단방향 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; private int age; // getter, setter } @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; @OneToMany // --① @JoinC..
0. 프로젝트 구조 1. build.gradle 1) buildscript //querydsl 추가 buildscript { dependencies { classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10") } } 2) apply //querydsl 추가 apply plugin: "com.ewerk.gradle.plugins.querydsl" 3) dependencies //querydsl 추가 implementation 'com.querydsl:querydsl-jpa' implementation 'com.querydsl:querydsl-apt' //querydsl 추가 끝 4) Querydsl build 관련 추가 설정 //..
0. 프로젝트 구조 1. build.gradle > dependencies 참고 : https://github.com/gavlyukovskiy/spring-boot-data-source-decorator // jpa binding parameter log 확인 implementation("com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.7.1") 2. application.yml server: port: 8088 spring: datasource: url: jdbc:h2:tcp://localhost/~/nutrient username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-aut..
- Total
- Today
- Yesterday
- 이벤트 스토밍
- Spring Data JPA
- Spring Boot
- 마이크로서비스 패턴
- Git
- 폴링 발행기 패턴
- MySQL
- ATDD
- 학습 테스트
- Stream
- spring rest docs
- mockito
- 트랜잭셔널 아웃박스 패턴
- kafka
- named query
- java8
- 스프링 예외 추상화
- 클린코드
- 계층형 아키텍처
- JPA
- 스프링 카프카 컨슈머
- 도메인 모델링
- TDD
- Spring
- http
- clean code
- H2
- 육각형 아키텍처
- HTTP 헤더
- Ubiquitous Language
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |