엔티티에는 가급적 Setter를 사용하지 말자

모든 연관관계는 지연로딩으로 설정!

컬렉션은 필드에서 초기화 하자.

컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.

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

하이버네이트 기존 구현: 엔티티의 필드명을 그대로 테이블의 컬럼명으로 사용

스프링 부트 신규 설정 (엔티티(필드) → 테이블(컬럼))

  1. 카멜 케이스 → 언더스코어 (memberPoint → member_point)