JPA에서 가장 중요한 2가지
영속성 컨텍스트
엔티티를 영구 저장하는 환경
논리적인 개념
엔티티 매니저를 통해서 영속성 컨텍스트에 접근
지금까지 공부한 환경은 엔티티 매니저를 생성하면 영속성 컨텍스트가 1:1로 생성
나중에 스프링 프레임워크랑 같이 하면 조금 개념이 달라짐
비영속
영속
준영속
삭제
영속성 컨텍스트 이점
1차 캐시
동일성 보장
트랜잭션을 지원하는 쓰기 지연
변경 감지
지연 로딩
뒤에서 설명하겠습니다.
플러시
그냥 왠만하면 AUTO를 써야함
커밋이나 쿼리를 실행할 때 플러시 됨
직접 플러시 가능
영속성 컨텍스트를 비우는게 아니라 변경 내용을 데이터베이스에 동기화
트랜잭션이라는 작업 단위별로 돌아감 → 영속성 컨텍스트와 트랜잭션의 주기를 맞춰서 설계가 들어가야 문제가 없음
트랜잭션이 끝나면 영속성 컨텍스트도 끝나버리게 설계를 해야 데이터 동기화 같은게 문제가 없음
결론적으로 JPA도 트랜잭션이라는 작업 단위에 많은 것을 위임하고 쓰기 때문에, 또 커밋 직전에만 동기화를 하기 때문에 데이터 동기화에 대한 이슈가 많이 없음