양방향 관계 @ToString 무한루프

이진규·2023년 3월 29일
1

SPRING 지식 공유

목록 보기
15/17

양방향 관계 @ToString 무한루프

양방향 관계에서 서로 @ToString을 정의해서 사용하다 보면 결국 무한으로 각각 객체의 toString을 호출하게 되면서 StackOverflowError가 발생하게 된다.

즉, Lombok의 @ToString, @Data나 IDE가 제공하는 toString() 메서드 자동 생성 기능이 편리하다고 무분별하게 사용하게 되면 이러한 상황이 발생할 수 있다.

해결 방법

해결할 수 있는 방법은 크게 3가지가 있다.

가장 단순한 방법은 Lombok이나 IDE가 제공하는 toString() 메서드를 그대로 사용하지 않고 toString() 메서드를 직접 구현하여 연관관계 속성을 출력하지 않는 방법이다.

양방향 관계의 한 클래스 혹은 두 클래스의 toString()에서 연관관계 속성 출력 부분을 제거해주면 된다.

두번째 방법으로는 Lombok에서 지원하는 @ToString(exclude = "필드명") 옵션을 추가하면 된다.

세번째 방법으로는 두번째 방법과 비슷한 것으로 해당 변수 위에 @ToString.exclude를 이용하여 toString이 실행되지 못하게 한다.

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글