데이터의 집합인 Entity 코드 작성을 맡았다. ERD의 칼럼을 코드로 옮기고 연관관계 매핑을 해야 했다. 어떻게 할 줄 몰라서 책 자바 ORM 표준 JPA 프로그래밍을 참고했다. 연관관계를 매핑할 때는 3가지를 고려해야 한다. 1) 다중성 2) 방향성 3) 연관관계 주인이다.
다중성은 다대일, 일대다, 일대일, 다대다 관계를 말한다. 방향성은 단방향, 양방향으로 나뉘며 한 쪽만 참조하면 단방향, 양쪽 모두 참조하면 양방향이라고 한다. 연관관계의 주인은 두 객체 중하나가 데이터베이스 외래 키를 관리하는데 이를 연관관계 주인이라고 한다. 연관관계 주인은 mappedBy
속성을 사용하지 않는다.
일대다 관계에서 외래키는 다측에 있는데 일측에서 외래키를 관리한다. 반대편 테이블의 외래키를 관리하는 것이다. 이에 저장할 때 INSERT SQL로 한 번에 끝내지 못하고 UPDATE SQL을 추가 실행해야 한다. 관리와 성능 문제를 해결하기 위해서는 일대다 단방향이 아닌 다대일 양방향 매핑을 사용할 수 있다.
단방향으로 설정하면 한 쪽에서만 참조가 가능하지만 양방향은 서로 참조 가능하다. 따라서 양쪽 모두에서 편의 메서드를 작성하면 무한루프에 빠질 수 있으니 주의가 필요하다.
멘토님께서 직접 코드리뷰를 해주신다. 👍