@JoinColumn(name = "user_id", nullable = false)
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private User user;
User 테이블과 대상 테이블을 연결할 때 FetchType.LAZY
를 설정하면 User 엔티티를 로딩할 때 user 와 연관된 모든 엔티티를 로딩하는 게 아니라 접근 하는 시점에 로딩한다.
이렇게 하면 당장 필요하지 않은 데이터는 로딩하지 않으므로 성능 최적화를 기대할 수 있다. 메모리 사용량이 줄어든다.
optional = false
는 관계가 맺어진 엔티티가 반드시 존재해야 함을 의미한다. 데이터베이스 외래키 제약 조건의 NOT NULL 에 해당한다.