본문 바로가기

JPA

JPA / 엔티티

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 문제에서 안전​

 

'JPA' 카테고리의 다른 글

연관관계 매핑  (0) 2023.01.04
엔티티 매핑  (0) 2022.12.27
플러시  (0) 2022.12.22
영속성 컨텍스트  (0) 2022.12.20
JPA 사용 이유  (0) 2022.10.19