1. 영속성 컨텍스트
- == 데이터를 영구적으로 저장 위한 환경 입니다. 엔티티 매니저는 영속객체를 관리 및 DB 엑세스 위한 객체이고, 영속 객체는 비영속, 영속, 준영속, 삭제 상태를 가집니다.

- 영속성 == 데이터를 영구적으로 저장
- 컨텍스트 == 대상의 모든 정보를 갖고 있다.
- 엔티티 매니저는 커밋 시점에서, 영속성 컨텍스트에서 관리하고 있던 영속객체의 변경내역을 추적하여 데이터 베이스 반영
- 엔티티 매니저는 디비 엑세스 위한 객체 (CRUD)
- 엔티티 매니저 생성하면 각 각 하나의 영속성 컨텍스트가 생성
- 엔티티 매니저에서 find 2번 하면, 첫번째는 쿼리실행, 두번째는 영속성 컨텍스트(캐시)에서 가져옴
- entitymanagerfactory로 초기화 → entitymanager 생성 및 사용 → close

- 객체생성 → entitymanger.persist(객체) → 영속성 컨텍스트 1차캐시 등록 → 커밋 → 디비에 요청
- 영속성 컨텍스트의 SQL 저장소에 SQL 대기 (쓰기지연)
- 영속성 컨텍스트의 SQL 저장소에는 INSERT, UPDATE, DELETE 쿼리만 저장됩니다. SELECT 쿼리는 SQL 저장소에는 포함되지 않습니다.
- CRUD 및 준영속과 삭제상태
- [find] find 했는데 영속성에 없으면,commit 전에 (sql 안모아두고)바로 실행해서 가져오고 1차캐시 저장
- [create] persist로 영속성에 객체 등록해두면 Commit때 DB insert 쿼리 날림
- [update] persist or find 해서 영속성 컨텍스트에 등록된 객체에 대해 setter로 값 수정하면, commit 할때 스냅샷 비교해서(더티체킹) 변화있으면 update 쿼리 디비에 날림
- [flush] flush 는 즉시 영속성 컨텍스트 내용을 디비와 동기화, 커밋 후 자동 플러시, 커밋없으면 롤백해서 디비 정보 지움.
- [준영속 상태] 커밋 후 영속성 컨텍스트에 관리되던 객체는 전부 준영속상태가 됌. 이후에 머지로 영속상태가능. 디비에 값 잇는 상태
- [삭제 상태] 삭제 상태의 엔티티는 영속성 컨텍스트와의 연관을 끊고, 트랜잭션이 커밋될 때 데이터베이스에서 제거됩니다. persist로 새로 재등록가능