9주차 RBF
- JPA
- 객체지향 패러다임과 데이터베이스 패러다임 차이로 인해 객체지향적으로 개발하지 못하는 점을 해결
- 예) RDB는 fk로 연관관계 연결, 멤버가 속한 팀을 구해오기 위해선 쿼리 2번
- 객체지향에서는 member.getTeam() → 참조를 가지고 있고 이 참조를 통해 구해옴.
- 엔티티 ↔ 테이블 매핑으로 객체지향적인 개발에 집중할 수 있게 해줌
- 영속성 컨텍스트
- EntityManagerFactory, EntityManager
- EntityManagerFactory:
- 엔티티 매니저 생성 역할
- 어플리케이션에서 하나만 생성해서 공유
- thread-safe
- EntityManager
- 스레드마다 하나씩 생성 사용
- em 통해 영속성 컨텍스트에 접근
- thread-safe 하지 x
- 영속성컨텍스트
- 엔티티 영속성 관리
- 트랜잭션에 종속적
- 내부 1차 캐시에 영속화된 엔티티를 저장해둠
- 엔티티 생명주기
- New, Managed, Detached, Removed 상태가 있음
- 엔티티 매핑
- 테이블 ↔ 엔티티 매핑
- 하나의 엔티티는 하나의 테이블과 매핑된다
- 연관관계 매핑
- 각 엔티티들 사이의 연관관계를 표현
- 일대일, 일대다, 다대다..
- 고급매핑
- 영속성 전이
- 고아 객체
- MappedSuperClass
- 프록시
- 엔티티의 지연로딩에 사용
- 우선 프록시 객체를 넣어두고 초기화 하는 식
- 초기화는 영속성 컨텍스트에 도움이 필요하므로 영속화된 엔티티만 프록시
- 초기화 사용 가능