반응형
단점
- 엔티티가 관리하는 외래 키가 다른 테이블에 있음 -> 작업한 Entity가 아닌 다른 Entity에서 쿼리문이 나가는 경우가 있어 헷갈림
- 불필요한 쿼리문이 발생(update 등..)
- 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 |