Programming-[Backend]/JPA

[TIL] 양방향 연관관계 복습 + Instancio + cascade

컴퓨터 탐험가 찰리 2025. 6. 2. 18:28
728x90
반응형
  • 객체지향적으로 JPA를 사용하기 위해 필요하다. 역방향 조회 시 절차지향적으로 코딩하는 것을 안하기 위함이다.

-> 양방향 연관관계가 없다면, TeamRepository.find -> MemberRepository.find를 통해 Team에 속한 Member 들을 찾아야하는데, Team 엔티티 내부에 List<Member> members를 두고 양방향 연관관계를 맺어두었다면, 엔티티 탐색처럼 team.getMembers()로 멤버 조회 가능

-> 양방향 관계를 만들면 @toString, @JsonBackRefrence 등을 처리해줘야하는 번거로움은 있다. 다만 이 내용은 역참조를 할 때의 편리성과 상충되는 것이다. 역참조를 한 번 만들어두면, 사용자들은 편하게 사용할 수 있다. 단방향이라면 각 Repository를 의존해야하는 단점도 있다.

 

  • 이때 Instancio의 자동 set에 주의해야한다.

-> Team에 필드로 표현된 Team의 members 객체를 null로 두는게 아니라 마음대로 랜덤하게 넣어버림. Instancio의 본질적 속성으로, null로 하는 Setting을 모두 넣어주던가, 아니면 members 같은 역방향 관계 속성을 null로 반드시 넣어줘야한다.

 

  • 결국 선택의 문제이다. 시니어의 역할은 선택의 문제까지 필요한 근거들을 나열할 수 있는 지식이 있어야하고, 그것들을 팀원들과 이성적이고 건설적으로 잘 토론할 수 있어야하는 것 같다.

 

  • cascade는 사이드 이펙트가 있을 수 있어서 실무에서는 거의 사용하지 않는다.
728x90
반응형