본문 바로가기
스터디/리얼 월드 스터디 회고

리얼 월드 스터디 회고 - 4

by 딱구킴 2022. 12. 23.

이번에는 Post - User(나는 Member를 사용했다)간 연관관계 매핑을 위한 작업을 했다. 많이 해왔던 일이지만, 그래도 할 때 마다 새로운 것 같다.

어제부터 계속 고민하던 내용이 있는데, “양방향 연관관계 매핑”이 반드시 필요할까?에 대한 내용과 “엔티티의 생명 주기는 어떻게 맞춰야 할까?”라는 내용이다.

양방향 연관관계 매핑이 반드시 필요할까?

“필요에 따라 구현해야 한다”가 맞는 답일 것 같다. 아직은 트레이드 오프를 어떻게 해야 적절한지를 모르겠지만, 일단은 JPA + hibernate에 대한 개념 숙지가 우선되어야 할 것 같다. 개념이 숙지 돼야 뭘 트레이드 오프를 해야할지 알 것 같기 때문이다.

엔티티의 생명 주기는 무엇을 기준으로 맞춰야 할까?

예를 들어 아래와 같은 연관관계 매핑이 있을 경우, 생명 주기는 어떻게 맞춰야 할까?

  • Member - Post : 다대일 매핑
  • Post - Comment : 다대일 매핑

사실 나는 처음에 아주 단순하게 생각했다. “Member가 삭제되면 Post도 삭제되어야 하는것 아닐까?” 라고.. 하지만, 여러 분들에게 질문도 드리고 논의도 해가며 좀 더 생각해보니, “과연 Member가 삭제된다고 Post도 삭제되는게 옳은 방향인가?”라는 생각이 들었다.

이러한 의문점이 든 이유는

  • Member가 탈퇴하면 Post도 전부 삭제할 것인가?
  • Post를 삭제하면 Comment도 전부 삭제할 것인가?

와 같은 요구사항이 제대로 정해지지 않았기 때문인 것 같다. 요구사항이 명확하게 정해질 경우, 그제서야 엔티티의 생명 주기를 맞출 기준을 알게될 수 있을 것 같다.

JPA는 어렵다

말 그대로 JPA는 어렵다. 분명 기본은 알고있다고 생각했는데, @JoinColumn, @ManyToOne 등의 상세 원리를 설명할수가 없는 상태였다. 내가 아는 JPA는 정말 “사용법” 정도만 아는 것이었다.

즉, 한마디로 공부를 제대로 안한 것이다.

JPA의 구현체 중 하나는 Hibernate이다. 그렇다고 Hibernate를 직접적으로 사용하는가? 는 아니다. SpringDataJpa라는 것을 사용한다. 직접적으로 사용하지 않는다고 해서 Hibernate를 몰라도 된다는 뜻은 아니라는 것을 알고 있지만서도.. Hibernate를 공부해보려고 시도할 생각조차 하지 않았다는게 가장 큰 문제였던 것 같다.

처음에는 책을 사볼까.. 했지만 책이 전부 오래된 책들밖에 없었다. 그래서 공식문서를 보기로 했다. 물론 너무 길어서 당장 전부 다 볼 시간은 없을 것 같기 때문에, 원리를 파악할 수 있을 정도로만 보기로 했다. 공부 목록에 추가해두고 지속적으로 정리해가며 봐야겠다.

소프트 스킬도 어렵다

말을 어떻게 해야 잘하는지 아직도 모르겠다. 꾸준한 노력과 연습이 필요한 부분이지 않을지..

댓글