컬렉션과 부가 기능

  • JPA가 지원하는 컬렉션의 종류와 중요한 부가 기능에 대해서 알아봅니다.

컬렉션

  • JPA는 자바에서 기본적으로 제공하는 컬렉션을 지원
  • Collection, List, Set, Map
  • @OneToMany, @ManyToMany
  • @ElementCollection
  • 맵은 @MapKey*어노테이션으로 매필할 수 있는데 여기서는 생략함

  • JPA와 컬렉션 *

  • 하이버네이트는 컬렉션을 효율적으로 관리하기 위해 엔티티를 영속 상태로 만들 때 원본 컬렉션을 감싸고 있는 내장 컬렉션을 생성
  • 이러한 특징 때문에 컬렉션을 사용할때 다음처럼 즉시 초기화해서 사용하는 것을 권장
Collection<Member> members = new ArrayList<Member>();
  • Set은 엔티티를 추가할때 중복된 엔티티가 존재하는지 검사
    • 따라서 엔티티 추가시 지연 로딩된 컬렉션을 초기화

@OrderColumn @OrderBy

@Converter

리스너

  • 이벤트의 종류
    • PreLoad
    • PrePersist
    • PreUpdate
    • PreRemove
    • PostPersist
    • PostUpdate
    • PostRemove
  • 여러 리스너를 등록했을때 순서
    • 기본 리스너
    • 부모 클래스 리스너
    • 리스너
    • 엔티티

엔티티 그래프

  • 엔티티 그래프는 엔티티 조회시점에 연관된 엔티티들을 함께 조회하는 기능
  • 엔티티 그래프는 정적으로 정의하는 Named 엔티티 그래프와 동적으로 정의하는 엔티티 그래프가 존재

  • Named 엔티티 그래프 *
  • 동적 엔티티 그래프 *