엔티티를 JSON으로 직렬화할 때 발생
A 엔티티와 B엔티티가 서로 참조하는 양방향 연관관계에 있을 때 A를 직렬화하려고 한다면 A는 B를 참조하고 다시 B는 A를 참조함으로 계속해서 서로를 참조하는 무한 참조가 발생하게 된다.
해결책
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "member", fetch = FetchType.LAZY)
// 양방향 관계에서 직렬화 수행 시 무한 참조를 방지하기 위함
@JsonIgnore
private List<Post> posts = new ArrayList<Post>();
}
| 예외 | 발생 상황 |
|---|---|
| NoSuchElementException | 비어있는 Optional 객체에 get() 메소드를 호출한 경우 |
| MemberNotFoundException | - |
| 비교 | Optional.orElse() | Optional.orElseGet() | Optional.ifPresent() |
|---|---|---|---|
| 파라미터 메소드 실행 | 값 null or 값 존재 | 값 null | 값이 존재할 경우만 다룬다 |