살구잼의 여정
article thumbnail

컬렉션 

JPA는 자바에서 기본으로 제공하는 Collection, List, Set, Map 컬렉션을 지원한다. 

자바 컬렉션 구조

자바 컬렉션 인터페이스의 특징

- Collection : 자바가 제공하는 최상위 컬렉션. 하이버네이트는 순서를 보장하지 않고 중복을 허용한다고 가정한다. 

- Set : 순서를 보장하지 않고 중복을 허용하지 않는 컬렉션.

- List : 순서를 보장하고 중복을 허용한다. 

- Map : Key, Value 구조로 되어있는 특수한 컬렉션.

 

* 순서가 있는 컬렉션은 데이터베이스에 순서 값도 함께 관리한다. 

하이버네이트 내장 컬렉션과 특징 - 으잉 리스트 오류있나?? 디비상의 순서가 엑스?

 

JPA와 컬렉션

하이버네이트는 엔티티를 영속 상태로 만들때 컬렉션 필드를 하이버네이트에서 준비한 컬렉션으로 감싸서 사용한다. 

(원본 컬렉션을 감싸고 있는 내장 컬렉션을 생성해서 이 내장 컬렉션을 사용하도록 참조를 변경한다. 하이버네이트가 제공하는 내장 컬렉션은 원본 컬렉션을 감싸고 있어서 래퍼 컬렉션으로도 부른다.)

 

@Converter

: 컨버터를 사용하여 엔티티의 데이터를 변환해서 데이터베이스에 저장할 수 있다. 

컨버터 사용 예시

 

컨버터 클래스는 @Converter 어노테이션을 사용하고 AttributeConverter 인터페이스를 구현해야 한다. 그리고 제네릭에 현재 타입과 변환할 타입을 지정해야 한다. 

<Boolean, String>을 지정해서 불리언타입을 스트링 타입으로 변환하는 예시

 

리스너

: 엔티티에서 발생한 이벤트를 처리한다.

 

이벤트 종류와 발생 시점

 

이벤트 적용 위치

- 엔티티에 직접 적용

- 별도의 리스너 등록

- 기본 리스너 사용

 

여러 리스너를 등록했을 때 이벤트 호출 순서

1. 기본 리스너

2. 부모 클래스 리스너

3. 리스너

4. 엔티티

 

엔티티 그래프 기능

: 엔티티를 조회할 때, 조회시점에  연관된 엔티티들을 선택해서 함께 조회한다.

그러기 위해선 글로벌 fetch 옵션을 FetchType.EAGER로 설정하거나,  JPQL에서 페치 조인을 사용한다.

 

... 아직 잘 모르겠음

 

 

profile

살구잼의 여정

@드림살구잼

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!