엔티티 설계 시 주의점
- 엔티티에는 가급적 세터를 사용하지 말자 세터 너무 많이 열려있으면 변경 포인트가 너무 많아서 유지보수가 어렵다.
- 모든 연관관계는 지연로딩으로 설정 즉시딩(EAGER)은 예측이 어렵다. 어떤 sql이 실행될지 추적하기가 어렵다. eager를 사용하면 db를 연관되어있는 데이터 걍 다 긁어온다. 연관된 엔티티를 함께 DB에서 조회해야하면 fetch join 또는 엔티티 그래프 기능을 사용한다. @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시 로딩이므로 직접 지연로딩으로 설정해야한다. fetch=FetchType.LAZY
- 컬렉션은 필드에서 초기화하자. NPE날일이 없다. 하이버네이트가 엔티티를 펄시스트 하는 순간 하이버네이트가 제공하는 내장 컬렉션으로 변경된다.
- cascade ->
order - orderItems / orderItems에 데이터를 넣어두고 order를 저장하면 orderItems도 저장이 된다. persist(orderItemA) persist(orderItemB) persist(orderItemC) persist(order)해야하는데 persist(order)하면 끝남.
'내일배움캠프 > TIL' 카테고리의 다른 글
2022.12.28 (1) | 2022.12.28 |
---|---|
2022.12.22 (2) | 2022.12.22 |
2022.12.16 (0) | 2022.12.16 |
2022.12.15 (0) | 2022.12.15 |
2022.12.13 / 프로그래머스 코딩테스트 입문 > 안전지대 (0) | 2022.12.13 |