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 => 키공유 방식 단방향, 양방향 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 사용 지양