
@OneToMany 관계를 설정 하니 오류가 발생했다.(물론 학습을 위해 구조를 꼬아서 설계)
One to Many 관계에서 연관된 컬럼의 이름만 보고 싶은데 모든 정보를 가져오게 된다면 수많은 쓸모없는 데이터도 가져오게 된다.
만약 회사 하나에 연관된 사원이 1000명이라면, 1000명의 인적사항 항목을 모두 불러와야하기에 비효율적이다.
그래서 Lazy Loading은 필요한 시점에 연관 객체의 데이터를 가져옴으로써 메모리 소비량 감소와 초기 로딩 시간을 단축 할 수 있다.
Many To One : FK를 관리 -> 연관관계의 주인
따라서 많은 데이터를 가져 올 필요가 없기에 즉시 로딩을 하게 된다
즉시 로딩은 엔티티를 모두 가져오지만, 엔티티간의 관계가 복잡해질수록 조인으로 인한 성능 저하 가 나타날 수 있다.
따라서 해당 오류를 해결하기 위해 즉시 로딩으로 바꿔서 작업을 진행해줘야한다.
//@OneToMany(mappedBy = "parent")
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER)
@JsonIgnoreProperties를 사용하면 된다.@Id
private int id;
private String name;
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER)
@JsonIgnoreProperties("parent") //추가된 부분
private List<Child> children = new ArrayList<>();
...
2-1. DTO로 필드를 선택적으로 사용한다.
2-3. 당연하게도 이렇게 설계 하지말자.