이전에 만든 프로젝트를 개선해보기로 마음을 먹었습니다. 처음 JPA를 배울 때에 연관관계 매핑을 가지고 테이블 간의 관계를 표현하는 것을 배웠습니다. 그러나 생각보다 명확하게 이해를 하지 못한 채로 어찌어찌 실행만 시키는 방식으로 계속 해왔었고 그로 인해 Entity의 관계를 설정하는 부분에서 많은 시간을 소요하고는 했습니다..
그러다가 최근 들어서는 굳이 연관관계를 사용해야 하는건지 고민을 했고 연관관계 매핑을 하지 않고 엔티티에 직접 FK(foreign key)를 추가하여 만드는 식으로 개발을 진행했었는데, 이 방법은 JPA를 사용하는 의미를 퇴색 시키는 것 이라는 것을 깨닫고 이를 수정해 보는 작업을 하기로 하였습니다.
기존 Entities는 아래와 같이 작성을 했습니다. Board, 와 Commend 클래스에 각각 uid, bid를 직접 넣어주어 FK역할을 하도록 하였고 이를 이용한 find를 사용하였습니다.
하지만 이렇게 사용할 경우 ... ( 효율적이지 않다고 알고는 있지만 정확한 이유를 찾아보고 적어두도록 하겠습니다. )
public class User implements UserDetails {
@Id
@GeneratedValue
private Long uid;
private String username;
private String password;
private String joinDate;
private String nickname;
}
public class Board {
@GeneratedValue
@Id
private Long bid;
private String title;
private String content;
private String nickname;
private String bregdate;
private Long uid;
}
public class Comment {
@GeneratedValue
@Id
private Long cid;
private String nickname;
private String comment;
private String cregdate;
private Long uid;
private Long bid;
}