⬛ JPA는 영속성 컨텍스트에 entity 객체들을 저장, 관리하고 DB와 소통한다.
⚫ 영속성 컨텍스트는 entity들을 가지고 있다.
- 엔터티들을 더욱 쉽게 조작하기위한 공간이다.
- JPA에서 엔터티들을 관리하는 환경, 이 객체들의 생명주기를 추적 관리한다.
- 논리적인 캐시 역할, 엔터티 객체의 변경을 감지하고 데이터 베이스에 동기화 한다.
논리적인 캐시 역할 : 엔터티를 데이터 베이스에서 읽어올때 영속성 컨텍스트는 엔티티를 메모리에 저장하는데 이것은 데이터 베이스에서 가져온 데이터를 메모리에 캐싱했다고 볼 수 있다.
℗ Persistence - 객체의 관점
- 생명주기 측면 : 객체는 프로그램이 실행되는 동안 계속해서 존재하며 필요에 따라 생성되고 소멸한다.
- 공간 측면 : 객체는 메모리 상에 할당되거나 데이터 베이스와 같은 영구적인 저장소에 저장 될 수 있음.
-생명주기 : 개발한 프로그램이 실행 중일때, 사용자 정보 객체는 메모리에 생성되어 활동함.
-공간(객체의 위치) : 사용자 정보 객체는 메모리 내에서 특정한 위치에 할당됨 이 위치는 객체의 주소로 표현됨. 프로그램이 실행되는 동안 해당 위치에 계속 존재함
만약 객체가 데이터 베이스에 저장된다면 객체는 프로그램이 종료되더라도 존재할 수 있다. 이것이 "객체가 공간을 자유롭게 이동할 수 있는 특징임"
⬛ EntityManager : JPA에서 영속성 컨텍스트를 조작하기 위한 인터페이스 엔티티의 조회, 수정, 삭제, 저장 등의 작업을 수행한다. 영속성 컨텍스트와 상호작용하며, 데이터 베이스와 연동한다.
⬛ EntityManagerFactory : 일반적으로 DB하나에 하나만 생성하여 사용함, 애플리케이션이 동작할 때 사용.
- Meta-INF/Persistence.xml <-(설정 정보 조회) <-- Persistence ->(생성)--> Factory -->(생성) EntityManager
키워드 : 영속성 컨텍스트, 트랜잭션, entity, entityManagerFactory, EntityManager, Persistence, sql문