11:50초 질문 입니다.
273
작성한 질문수 16
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
@OneToMany 어노테이션 사용시 new ArrayList<>(); 를 관례상 쓰는 이유 외에도 다양한 장점들에 대해 자세히 알 수 있을까요? 감사합니다.
답변 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





