1. JPA
- 자바 컬렉션 객체를 저장하고 조회 하듯이 이용
- JPA가 적절한 쿼리를 만들어 사용
- Java Persistence API
- 강력한 자바 ORM 표준기술의 인터페이스
- 인터페이스를 구현해서 사용 (ex: Hibernate)
2. 엔티티
- 엔티티 : DB 테이블과의 매핑
- @Id : 기본키
@Entity public class Member { @Id @GeneratedValue private Long id; ... }
3. 엔티티 유의점
- 엔티티에는 가급적 Setter를 사용하지 말자
- 변경포인트 및 유지보수 증가
- 모든 연관관계는 지연로딩(LAZY)으로 설정
- 즉시로딩(EAGER)은 예측이 어려움(즉시로딩 : 연관되어있는걸 다 불러옴)
- 즉시로딩(EAGER) JPQL 호출시 SQL문으로 번역되어 쿼리가 n+1 문제 발생 (쿼리가 추가로 더 요청됨)
- 함께 조회해야 한다면 fetch join 또는 엔티티 그래프 기능 사용
- @xToOne(OneToOne, ManyToOne)관계는 즉시로딩(EAGER)이 defalut 이므로 지연로딩(LAZY)로 변경해야함
- @xToMany(OneToMany, ManyToMany)관계는 지연로딩(LAZY)가 defalut
- 컬렉션은 필드에서 초기화
- null 문제에서 안전