관리 메뉴

꿀맛코딩

프록시 본문

공부방/JPA

프록시

soycrab 2023. 3. 10. 22:30
  1. 프록시 객체는 처음 사용할 때 한 번만 초기화

  2. 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님,
    초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 

  3. 프록시 객체는 원본 엔티티를 상속 받음, 따라서 타입 체크시 주의 해야함 (== 비교 실패, 대신 instance of 사용)

  4. 영속성 컨텍스트에 찾는 엔티티가 이미 있으면, em.getReference()를 호출해도 실제 엔티티 반환 
  5. 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때, 프록시를 초기화 하면 문제 발생

 

프록시와 즉시로딩 주의

 - 가급적 지연 로딩만 사용(특히 실무)

- 즉시 로딩을 적용하면 예상하지 못한 SQL이 발생

- 즉시 로딩은 JPQL에서 N+1 문제를 일으킨다.

 - @ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정

- @OneToMany, @ManyToMany는 기본이 지연 로딩

반응형

'공부방 > JPA' 카테고리의 다른 글

값 타입과 불변 객체  (1) 2023.03.21
임베디드 타입  (0) 2023.03.21
MappedSuperclass  (0) 2023.03.05
고급 매핑  (0) 2023.03.04
다양한 연관관계 매핑  (0) 2023.02.22
Comments