[스프링] 연관 관계의 주인

배코딩·2024년 7월 17일
0

note

목록 보기
134/151

연관 관계의 주인

다대일에서 보통 다 쪽에 외래키 관리를 맡긴다 (연관 관계의 주인)

만약 객체 레벨에서 양방향을 설정하고 싶다면, 연관 관계의 주인이 아닌 일 쪽에서 일대다 어노테이션을 걸어주고 mappedBy로 상대 쪽 외래키 필드가 뭔지를 명시해주면 된다.

이 때, 연관 관계의 주인이 아닌 쪽에서는 참조 중인 상대 겍체를 읽기만 가능하고 쓰기를 할 수 없다.

그런데 orphan 설정이나 cascade 를 연관 관계의 주인이 아닌 쪽에 걸면 일 쪽이 지워지면 참조중인 다 쪽을 다 연쇄적으로 지워준다. 이건 그럼 쓰기 작업인거 아닌가??

이에 대해 좀 찾아봤는데, 위의 설정은 DB 레벨에서 수행하는 것인 것 같고, 객체 레벨에서는 일 쪽에서 참조 중인 다 쪽의 객체를 코드 상에서 직접적으로 쓰기 작업을 했을 때,(엔티티 클래스 필드에 있는 상대 엔티티 객체에 대해 수정, 삭제 등 수행했을 때) 실제 DB 상에는 반영이 안된다는 의미로 받아들였다.

profile
PS, 풀스택, 앱 개발, 각종 프로젝트 내용 정리 (https://github.com/minsu-cnu)

0개의 댓글