Spring Data JPA Entity 연관관계 편의 메서드(무한루프 방지)

Jeheon Park·2021년 10월 8일
0

문제점

42서울 도서관 시스템을 개발하면서 다대일 양방향 관계를 설정했다. 테스트 과정에서 양방향 관계의 편의메서드에서 무한루프에 빠지는것을 확인했다.

해결

우선, 연관관계 편의 메서드란 Entity를 변경하거나 저장할때 연관관계에 있는 Entity쪽에도 저장을 해주는것이다. 보통 한쪽만 만들어서 저장을 하거나, 양쪽을 전부 만들경우에 무한루프에 빠지지 않게 설정해줘야 한다.

위의 코드들을 보면 if문을 통해서 반대편에 연관관계가 없을때만 해당 메서드를 호출해준다. 하지만, if문을 깜박하고 양쪽을 다만들어서 실행한다면 당연히 무한루프가 돌게된다. 양방향관계를 설정할때는 항상 조심해야한다.

어차피 db저장은 더티체킹(변경감지기능)으로 EntityManager가 알아서 해주겠지만 양방항 관계를 설정하지 않으면 자바내에서 관계가 설정되지 않아서 난감한 상황이 벌어 질 수 있으니 조심해야한다.

profile
개발자

0개의 댓글