🎯 JPA의 ID 생성 전략JPA는 직접 할당과 자동 할당을 통해 ID를 생성한다. 먼저, 직접 할당 방식은 @Id 어노테이션을 사용한다. 이 때 다른 어노테이션은 함께 사용하지 않고 기본키를 할당한다.데이터베이스가 아니라 애플리케이션에서 기본 키를 직접 할당한다.@Id@Column(name = "ID")private String id; 기본 키 직접 할당 전략은 em.persist()로 엔티티를저장하기 전에 기본 키를 직접 할당한다.Book book = new Book();book.setId("id1"); // 기본 키 직접 할당em.persist(); 그럼 기본키를 직접 할당하지 않고 데이터베이스에서 생성하주는 값을 사용하려면 어떻게 매핑해야 할까?데이터베이스마다 기본 키를 생성하는 방식이 다르기 ..

🪐 N + 1 문제JPA의 N+1 문제는 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상이다.만약, 유저와 게시물 엔티티가 1 : N의 관계를 맺고 있는 경우, 유저를 조회한 후 각 유저마다 게시물을 조회하기 위해 유저의 개수(N)만큼의 쿼리가 더 날아간다.데이터가 얼마 없는 환경에서는 큰 성능 이슈가 없겠지만 실제 업무를 수행하거나 많은 양의 데이터를 조회할 시에는 성능 이슈가 생기게 된다. JPA로 개발 시 성능상 가장 주의해야 하는 것이 N+!문제다. 즉시 로딩 즉시 로딩은 JPQL을 실행할 때 N + 1 문제가 발생할 수 있다. // User.java@OneToMany(mappedBy = "user", fetch = FetchTy..
🗳 ddl-auto 옵션JPA의 구현체 중 하나인 Hibernate가 제공하는 기능 중에 하나로, 데이터베이스 스키마 관리를 제어하는 설정 application.yml이나 application.properties에서 관련 설정이 가능하다. ddl-auto 속성1. none데이터베이스 스키마와 관련된 작업을 수행하지 않는다.실제 운영 환경인 프로덕션 환경에서 주로 사용된다.2. validate애플리케이션 실행 시점에 엔티티와 테이블이 정상적으로 매핑되었는지 확인한다.따로 스키마 변경을 없다.3. update애플리케이션 실행 시점에 엔티티와 테이블 상태를 확인하여(엔티티 매핑과 데이터베이스 스키마 비교) 필요한 경우 스키마를 업데이트한다.기존 데이터는 유지되고, 새로운 엔티티나 변경된 엔티티 필드가 스키마..
- Total
- Today
- Yesterday
- id생성전략
- null
- 동등성
- JPA
- ddl-auto
- checkedException
- Thymeleaf
- Spring
- 자바
- 생성자
- 유효성 검사
- Java
- 일급컬렉션
- @Value
- Optional
- 이진탐색
- 백준
- NPE
- @ConfigurationProperties
- N+1문제
- @Spring
- springboot
- upperBound
- 티스토리챌린지
- @NoArgsConstructor
- 메인메소드
- StreamAPI
- lowerBound
- uncheckedException
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |