강의

jpa 강의

프록시

  • 원래 객체를 찾을 땐 em.find()를 해서 db쿼리를 날려 받아왔으면,
  • 쿼리 안 날리고 가짜 proxy entity객체를 조회하는데 쓰는 함수 => em.getReference()

프록시 특징

  1. 프록시 객체는 처음 사용할 때 한번만 초기화된다
  2. 프록시 객체를 초기화할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근이 가능함
  3. 프록시 객체는 원본 엔티티를 상속받는다. 따라서 타입 체크 시 주의해야 한다. -> instanceof를 사용해라
  4. 영속성 컨텍스트(1차 캐시)에 찾는 엔티티가 이미 있으면 em.getReference()를 호출해도 실제 엔티티를 반환한다.
  5. 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때, 프록시를 초기화하면 문제가 발생한다.
    • 그니까 detach, close됐을 때 프록시 접근하려고 하면 생기는 문제인 것

즉시 로딩과 지연로딩

웬만해선 지연로딩을 쓰자 ㅇㅇ

영속성 전이와 고아 객체

CASCADE.ALL/REMOVE/PERSIST orphanRemoval = true

results matching ""

    No results matching ""