1차 캐시(영속성 컨텍스트라고 생각할 것)에 저장, 한번 조회한 거 또 조회하면 DB에 쿼리 안날림
try {
// 비영속
Member member = new Member();
member.setId(100L);
member.setName("HelloJPA");
// 영속
em.persist(member)
// 엔티티 삭제
em.remove(member)
} catch (Exception e) {
tx.rollback();
} finally {
tx.commit()
}
영속 엔티티의 동일성 보장: 1차 캐시로 반복 가능한 읽기 등급의 트랜잭션 격리 수준을 DB가 아닌 application 차원에서 제공
쓰기 지연 SQL 저장소
jdbc.batch: 버퍼링 기능, commit을 모아서 한번에 push 하는 기능
Dirty checking (변경 감지): DB에 update 쿼리를 안날리고 값만 변경해도 알아서 저장해주는 기능
트랜잭션이라는 작업 단위가 중요하며, 커밋 직전에만 동기화하면 됨
영속 상태의 엔티티가 영속성 컨텍스트에서 detached(분리)된 상태
// 특정 엔티티만 준영속 상태로 전환
em.detach(memeber)
// 영속성 컨텍스트를 완전히 초기화
em.clear()
// 영속성 컨텍스트를 종료
em.close()