반응형

단점

  1. 엔티티가 관리하는 외래 키가 다른 테이블에 있음 -> 작업한 Entity가 아닌 다른 Entity에서 쿼리문이 나가는 경우가 있어 헷갈림
  2. 불필요한 쿼리문이 발생(update 등..)
  3. join table 문제

객체 저장시 update 쿼리문 추가 발생

  • Team(1) : Member(N) 구조를 가지는 테이블로 비교하겠습니다.
  • Team Entity에서 @OneToMany로 단방향을 가지는 구조입니다.

ex) Entity

ex) 2개의 member를 저장하는 코드

-> 실행 결과

member에 팀을 세팅해주는 2번의 update 쿼리가 추가로 발생함
만약 @ManyToOnE의 관계였다면 member 객체가 team을 가지고 있는 구조였다면 발생하지 않습니다.(외래키를 member가 직접 관리하기 때문에)

ex) team에 속한 member 삭제

members에서 member를 제거 했으니 해당 member에 team_id를 null로 만드는 update쿼리가 날라가는게 당연하고 memberRepository로 member를 제거했으니 delete 쿼리가 날라가는게 당연합니다.

@OneToMany 양방향

-> 위의 내용 수행 결과

ex) Team의 @OneToMany에 orphanRemoval과 cascade설정을 다음과 같이 해줍니다.

members에서 member를 삭제해주기만해도 memberRepository와 연동되어 자동으로 member를 삭제해줍니다.

반응형

'개발 > JPA' 카테고리의 다른 글

[JPA] Cascade  (1) 2023.09.10
[JPA] @OneToMany orphanRemoval  (0) 2023.09.10
JPA 무한 재귀 해결방법  (0) 2023.09.10
JPA 주요속성(@JoinColumn, @MaynToOne, @OneToMany)  (0) 2023.09.10
JPA 지연로딩(LAZY) 즉시로딩(EAGER)  (0) 2023.09.10

+ Recent posts