본문 바로가기

즉시로딩2

지연 로딩 & 조회 @JsonIgnore 스프링 부트 활용 강의 중, @JsonIgnore 에 관한 내용이 존재한다. @JsonIgnore 는 무한 루프 조인을 막기 위해서 쓰는 어노테이션인데, 예를 들면 다음과 같다. (위의 예에서 @JsonIgnore 는 무시) Order 를 조회하는 경우, XtoOne 관계로 이어진 Member 와 Delivery 가 문제가 된다. Order 에서 Member 를 조회하면 위와 같은 Member 에서 조회를 하게 되는데 이 때, List orders 가 조회되게 된다. 그렇게 되면 또 다시 Order 테이블로 들어가서 조회를 하다가 다시 Member 를 조회하고 이게 무한 루프로 조회하며 장애를 일으킨다. 이렇듯 양방향 연관관계가 걸린 경우, 한쪽은 반드시 @JsonIgnore 처리를.. 2022. 3. 23.
JPA Basic - 6 프록시 타입 체크 시 , 같은 객체를 조회해도 em.find 와 em.Reference(Proxy) 객체 값이 차이가 있기 때문에 값은 같더라도 다르다고 나오게 된다. -> instanceof 로 비교. 하지만 하나의 트랜잭션 안에서는 find 와 Reference 비교를 하게 되면 == 으로 비교해도 똑같다. -> proxy 가 아닌 실제 엔티티 반환 영속성 컨텍스트를 꺼버리면(em.close , em.detach) -> exception 이 터지게 된다. 초기화 여부는 EntityManagerFactory 를 통해서 조회. ※ 프록시는 실제로 사용하는 경우는 많지 않지만 즉시 로딩과 지연 로딩을 이해하기 위해서 필요한 과정. 즉시 로딩 & 지연 로딩 지연 로딩 @ManyToOne(fetch = Fet.. 2021. 12. 30.