1:N 관계에서는 N 쪽이 무조건 외래키가 존재한다.
일대다, 다대일 양방향 관계에서는 연관관계의 주인을 정해야하는데,
외래키가 있는 쪽을 연관관계의 주인으로 정하는 것이 좋다.
일대일 관계인 경우 FK는 보통 access가 많은 쪽으로 정하면 된다
가급적이면 Setter를 사용하지 말자.
변경 포인트가 너무 많아서 유지보수가 힘들다.
모든 연관관계는 지연로딩으로 설정해야한다.
@XToOne인 경우에는 모두 지연 로딩으로 변경해줘야 한다. 기본이 즉시 로딩이므로,
즉시 로딩으로 하게 되면 실무에서 매우 위험할 수 있다.
DTO는 Data Transfer Object의 약자로, 계층 간 데이터 교환 역할을 한다. DB에서 꺼낸 데이터를 저장하는 Entity를 가지고 만드는 일종의 Wrapper라고 볼 수 있는데, Entity를 Controller 같은 클라이언트단과 직접 마주하는 계층에 직접 전달하는 대신 DTO를 사용해 데이터를 교환한다.
값을 변경하는데 엔티티를를 사용하면 좋지 않음
연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제
FetchType.Lazy ( 지연로딩 )
fetch join ( 하위 엔티티를 묶어서 한번에 가져옴 )
batch_fetch_size
필드주입, 수정자 주입에 비하여 외부에서 변경하기 힘들고 의존성을 낮추는 방법
Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)