Spring Boot/JPA
Spring Boot 양방향 vs 단방향
최-코드
2024. 7. 11. 00:37
일대다 단방향 :
- 다인 부분을 저장할 때는 문제가 없지만, 일인 부분을 저장하려고 할 때 일인 부분에 속하는 다인 부분을 저장을 하고 그 이후 외래키를 설정하기 위한 update 쿼리가 발생한다.
- 따라서 일대다 단방향 매핑이 필요한 경우 그냥 다대일 양방향 연관 관계를 매핑하는 것이 추후 유지보수에 수월하다.
다대다 연관 관계 :
- 중간 테이블이 숨겨져 있기 때문에 개발자가 모르는 복잡한 조인의 쿼리가 발생할 수 있다.
- 다대다 관계를 일대다, 다대일로 풀어서 사용하자.
- 실무에서 절대 사용 금지
일대일 연관 관계 :
- 주테이블 user와 대상테이블 userInfo가 있다고 치자.
- https://rosoa0475.tistory.com/225을 토대로 외래키의 위치를 설정해준다.
다대일 연관 관계:
- 다대일 양방향 관계는 객체를 복잡하게 만들 수 있다. 예를 들어 유저 엔티티는 다양한 엔티티와 관계를 맺는데 모두 양방향 관계로 맺을 시 매우 복잡해진다. 또한 N+1 문제가 발생할 확률이 높다.
- 따라서 기본적으로 단방향으로 설정한 다음, 나중에 역방향으로 객체 탐색이 꼭 필요하다고 느낄 때 추가하는 것이 바람직하다.