[TIL/JPA] 기본개념 : 프록시와 연관관계 관리[즉시(EAGER)로딩, 지연(LAZY)로딩]
·
TIL/JPA
1. 프록시어느 경우에 Member만 가져오고, 어느 경우에는 Member와 Team 같이 가져와야한다.Member만 가져와야 하는데 Team도 같이 가져오는 경우에는 낭비이다.이런 경우를 해결하기 위해서는 지연 로딩과 즉시 로딩을 사용해서 해결을 하는데, 해당 개념을 공부하기 위해서는 프록시에 대해서 먼저 알아봐야한다! JPA에서는 find() 메서드가 아닌 getReference() 메서드를 제공하고 있다.em.find() 메서드는 데이터베이스를 통해서 실제 엔티티 객체를 조회를 하지만,em.getReference() 메서드는 참조를 가져오는 메서드이며, 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회. 즉, 쿼리를 날리지 않고 조회를 하는 메서드이다. 아래 코드를 보고 어떻게 동작하는지 ..
[TIL/JPA] 기본 개념 : 영속성 관리 - 내부 동작 방식
·
TIL/JPA
1. 엔티티 매니저 팩토리와 엔티티 매니저EntityManagerFactory는 애플리케이션 생성할 때 1번만 생성한다. 1개의 DB당 1개!EntityManager는 쓰레드 간에 공유하지 말아야 한다. 고객의 요청 1회당 1번씩 생성된다. 2. 영속성 컨텍스트엔티티를 영구 저장하는 환경이라는 의미EntityManager.persist(entity);DB에 저장하는 것이 아니라 엔티티를 영속성 컨텍스트 라는 곳에 저장한다는 의미 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않는다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. 고객의 요청이 들어오면 생성하고, 고객의 요청이 끝나면 사라짐(아래 영속성 컨텍스트의 이점에 있는 1차 캐시도 이때 다 사라지기 때문에 큰 성능 이점을 얻을 수는 없음) 3..