컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.
getOrders()
처럼 임의의 메서드에서 컬력션을 잘못 생성하면 하이버네이트 내부 메커니즘에 문
제가 발생할 수 있다. 따라서 필드레벨에서 생성하는 것이 가장 안전하고, 코드도 간결하다.Member member = new Member();
System.out.println(member.getOrders().getClass());
em.persist(team);
System.out.println(member.getOrders().getClass());
/*
출력 결과
class java.util.ArrayList
class org.hibernate.collection.internal.PersistentBag
*/
스프링 부트에서 하이버네이트 기본 매핑 전략을 변경해서 실제 테이블 필드명은 다름
Hibernate ORM 5.4.33 User Guide
Hibernate ORM 5.4.33 User Guide
SpringPhysicalNamingStrategy
하이버네이트 기존 구현: 엔티티의 필드명을 그대로 테이블의 컬럼명으로 사용
스프링 부트 신규 설정 (엔티티(필드) → 테이블(컬럼))