JPA에서 컬렉션을 필드에 초기화하는 이유

gotcha!!·2023년 9월 21일
0

JPA

목록 보기
15/16

컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.
1. null 문제에서 안전하다.
2. 하이버네이트는 엔티티를 영속화 할 때, 컬랙션을 감싸서 하이버네이트가 제공하는 내장 컬렉션으로 변경한다.
만약 getOrders() 처럼 임의의 메서드에서 컬력션을 잘못 생성하면 하이버네이트 내부 메커니즘에 문 제가 발생할 수 있다. 따라서 필드레벨에서 생성하는 것이 가장 안전하고, 코드도 간결하다.

Member member = new Member();
System.out.println(member.getOrders().getClass());
em.persist(member);
System.out.println(member.getOrders().getClass());

//출력 결과
class java.util.ArrayList
class org.hibernate.collection.internal.PersistentBag
profile
ha lee :)

0개의 댓글