ilkwon66.log
로그인
ilkwon66.log
로그인
JPA_Chap14_컬렉션과 부가 기능
윤일권
·
2023년 7월 11일
팔로우
0
JPA
0
JPA
목록 보기
10/11
컬렉션
Collection, List
중복을 허용하는 컬렉션이고, PersistenBag을 래퍼 컬랙션으로 사용
Collection, List는 엔티티를 추가할 때 중복된 엔티티가 있는지 비교하지 않고, 단순히 저장만 하면된다. 따라서 엔티티를 추가해도 지연 로딩된 컬렉션을 초기화하지 않는다.
Set
중복을 허용하지 않는 컬렉션
Set은 엔티티를 추가할 때 중복된 엔티티가 있는지 비교해야 한다. 따라서 엔티티를 추가할 때 지연 로딩된 컬렉션을 초기화한다.
List + @OrderColumn
@OrderColumn을 추가하면 순서가 있는 특수한 컬렉션으로 인식.
순서가 있다는 의미는 데이터베이스에 순서 값을 저장해서 조회할 때 사용한다는 의미. (PersistentList 사용)
@Converter
컨버터를 사용하면 엔티티의 데이터를 변환해서 데이터베이스에 저장할 수 있다.
컨버터 클래스는 @Converter를 사용하고 AttributeConverter 인터페이스 구현해야 한다.
@Converter(autoApply = true) 옵션을 적용하면 모든 카입에 컨버터를 적용한다.
리스너
JPA 리스너 기능을 사용하면 엔티티의 생명주기에 따른 인벤트를 처리할 수 있다.
이벤트 적용 위치
엔티티에 직접 적용
별도의 리스너 등록
기본 리스너 사용
여러 리스너 등록시 이벤트 호출 순서
기본리스너 -> 부모 클래스 리스너 -> 리스너 -> 엔티티
엔티티 그래프
엔티티 그래프 기능은 엔티티 조회 시점에 연관된 엔티티들을 함께 조회하는 기능이다.
정적으로 정의하는 Named 엔티티 그래프
@NamedEntityGraph로 정의
동적으로 정의하는 엔티티 그래프
createEntityGraph() 메소드를 사용.
JPQL에서 엔티티 그래프를 사용하는 방법은 em.find()와 동일하게 힌트만 추가하면 된다.
윤일권
생각하는 개발자가 되겠습니다!!
팔로우
이전 포스트
JPA_Chap12_스프링 데이터 JPA
다음 포스트
JPA_Chap15_고급 주제와 성능 최적화
0개의 댓글
댓글 작성