id로 조회한 경우 초기화 없이 바로 접근 가능(프로시 생성 시 주입)findById() VS getReferenceById() 비교| 메서드 | 반환 객체 | SQL 실행 시점 | 특징 |
|---|---|---|---|
findById(id) |
실제 엔티티 | 호출 즉시 | 모든 필드 로딩됨, 프록시 아님 |
getReferenceById(id)(EntityManager.getReference()) |
프록시 객체 | 필드 접근 시 | id 접근은 쿼리 없음, 다른 필드 접근 시 쿼리 실행 |
findById() → 내부적으로 EntityManager.find() 호출 → 프록시 반환 XgetReferenceById() → 내부적으로 EntityManager.getReference() 호출 → 프록시 반환 OgetOne() → Spring Data JPA 2.5 이전 메서드로 현재는 getReferenceById()로 대체EntityManager.getReference() 직접 호출JpaRepository.getReferenceById() 호출JpaRepository.getOne() 호출@OneToMany, @ManyToOne 등) 접근 시