::JPA:: 콜렉션, 연관 매핑

MinJeongKim·2024년 2월 21일
0
post-thumbnail
  • 콜렉션

    Set 매핑
    - Entity에 @ElementCollection, @CollectionTable 어노테이션으로 지정
    - fetch type 기본 lazy => FetchType.EAGER로 변경 가능
    List 매핑
    - @ElementCollection, @CollectionTable, @OrderColumn 지정
    Map 매핑
    - @ElementCollection, @CollectionTable, @MapKeyColumn 지정

    주의사항 성능문제 -> CQRS
    1. 변경기능 - JPA활용 / 조회기능 - MyBatis,JDBCTemplate,JPA 중 적절한 기술 사용
    2. 모든 기능을 JPA로 구현하지 않기(목록, 상세와 같은 조회 기능은 데이터 패치 건수에 따라 성능 저하를 야기함)

    영속 컨텍스트 & 라이프 사이클 1. JPA는 영속 엔티티(객체)를 영속 컨텍스트에 담아 변경 추척 (트랜잭션 커밋 시점에 변경 반영)

    1. 분리됨 상태는 변경을 추적하지 않음
  • 연관 매핑

    연관종류

    1:1 => 참조키 방식 단방향, 양방향
    1:1 => 키공유 방식 단방향, 양방향
    N:1 => 단방향
    1:N => 콜렉션 단방향
    N:1/1:N => 양방향
    M:N => 단방향/양방향

    1:1 단방향 연관 매핑
    - 참조키 방식: @OneToOne, @JoinColumn 어노테이션 사용
    - 식별자 공유 방식: @OneToOne, @PrimaryKeyJoinColumn 어노테이션 사용

    N:1 단방향 연관 매핑
    - @ManyToOne, @JoinColumn 어노테이션 사용

    1:N 단방향 연관 매핑
    - 콜렉션을 사용한 매핑(Set, List, Map)
    - @OneToMany 어노테이션 사용, 컬렉션 타입에 따라 @OrderColumn, @MapKeyColumn 등 지정

    고려사항
    - 객체 탐색을 위한 목적으로 연관 매핑 사용 금지
    - 조회는 전용 쿼리나 @Embeddable 사용 고려
    - N:1 사용 지양

    출처: 인프런
profile
웹 개발자 & DA

0개의 댓글