JPA/영속성 관리 3

[JPA] 플러시(Flush)

플러시 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영 플러시 발생 변경 감지 수정된 엔티티 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송 (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시 하는 방법 em.flush() - 직접 호출 트랜잭션 커밋 - 플러시 자동 호출 JPQL 쿼리 실행 - 플러시 자동 호출 플러시 모드 옵션 FlushModeType.AUTO 커밋이나 쿼리를 실행할 때 플러시 (기본값) FlushModeType.COMMIT 커밋할 때만 플러시 플러시 주의사항 영속성 컨텍스트를 비우지 않음 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화하면 됨 출처 : https://www.infle..

[JPA] 영속성 컨텍스트

JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑 (Object Relational Mapping) 영속성 컨텍스트 영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManager.persist(entity); 논리적인 개념 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 Entity 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 비영속 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 영속성 컨텍스트에 관리되는 상태 준영속, 삭제 영속성 컨텍스트의 이점 1차 캐시 동일성(iden..