엔티티를 영구 저장하는 환경
애플리케이션이 DB 에서 꺼내온 객체를 보관하는 역할
영속성 컨텍스트는 엔티티 매니저( Entity Manager )를 통해
엔티티를 조회하거나 저장할때 엔티티를 보관하고 관리
<aside> 💡 영속성 컨텍스트에는 1차캐시가 존재
엔티티를 영속성 컨텍스트에 저장하는 순간 1차캐시에 객체가 key , value 값으로 저장.
엔티티 매니저가 조회를 할때 먼저 영속성 컨택스트에 있는 1차캐시에서 해당 엔티티를 찾고 엔티티가 존재할 경우 DB에 접근하지 않고 반환
엔티티가 존재하지 않을경우 엔티티 매니저가 em.flush() 할때에 데이터베이스에 접근해서 엔티티를 꺼내오고 해당 엔티티를 1차캐시에 저장
</aside>
<aside> 💡 영속성 컨텍스트에서 꺼내온 객체는 동일성이 보장 같은 엔티티를 두번 조회할 경우 두개의 엔티티는 동일한 엔티티
1차 캐시로 반복 가능한 읽기(REPEATABLE READ) 등급의 트랜잭션 격리 수준을 데이터베이스가 아닌 애플리케이션 차원에서 제공
</aside>
비영속
// 엔티티를 생성
Member member = new Member();
member.setId("member1");
member.setUsername("회원1");