inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

실전 예제 2 - 연관관계 매핑 시작

11:50초 질문 입니다.

273

홋메

작성한 질문수 16

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
@OneToMany 어노테이션 사용시 new ArrayList<>(); 를 관례상 쓰는 이유 외에도 다양한 장점들에 대해 자세히 알 수 있을까요? 감사합니다.

java jpa

답변 1

0

나무늘보

안녕하세요. 주호세님, 공식 서포터즈 코즈위버입니다.

JPA는 엔터티 내 콜렉션 필드를 PersistentBag 콜렉션으로 감싸 사용합니다. PersistentBag은 지연로딩 및 객체변경추적 등을 지원하며 JPA의 최적화 및 더티체킹을 지원합니다. 만약 사용자가 엔터티의 콜렉션 필드를 덮어씌울경우 JPA 정상 동작을 보장할 수 없습니다.

PersistentBag으로 감싸기 위해선 콜렉션이 일단 생성(메모리 상)되어있어야 합니다. 즉, new ArrayList<>();가 어딘가에선 반드시 수행된 후 PersistentBag으로 감쌀 수 있습니다. 그러나 JPA가 어느 시점에 엔터티에 접근하여 콜렉션을 PersistentBag으로 감쌀지 사용자가 예측하기 힘듭니다. 그래서 강의에서는 필드에 콜렉션을 선언함과 동시에 초기화도 같이 하도록 안내하고 있습니다.

콜렉션 초기화를 setter 등을 이용하게 될 경우 콜렉션이 메모리에 생성되기 전에 JPA가 먼저 PersistentBag을 만들려고 시도할 수 있어 오류가 날 수 있습니다.

감사합니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

44

2

inheritance startegy 선택시 고려사항

0

28

1

Entity 동등성 비교

0

28

1

실무 조언 관련 질문입니다.

0

53

1

H2데이터베이스 파일 생성

0

62

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

61

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

59

1

JPQL 메소드와 락

0

57

1

Delivery @OneToOne

0

64

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

98

2

UnsupportedOperationException 발생

0

89

3

H2 Database 연결이 안됩니다.

0

98

2

연관관계 매핑 질문드립니다.

0

88

2

h2데이터베이스 실행오류

0

110

2

persistence.xml

0

114

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

84

1

영속성 컨텍스트

0

70

1

JPA 프록시

0

100

1

Native Query와 MyBatis

0

74

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

95

1

임베디드 타입 예시 코드 관련 질문

0

121

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

97

3

인텔리제이 패키지 커서 단축키 질문

0

110

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

149

1