spring/JPA
-
flush()spring/JPA 2022. 8. 13. 03:36
영속성 컨텍스트에 생성된 SQL문을 DB에 반영하는 것으로 플러시를 한다고 SQL 쿼리가 실행되진 않음 변경 감지시 플러시가 자동 발생된다. 사용법 -em.flush() -트랜잭션 커밋시 -JPQL 실행시 커밋시에만 발생시킬지, 커밋+JPQL실행시 발생시킬지 세팅가능하다. *플러시는 -영속성 컨텍스트를 비우지 않는다. -영속성 컨텍스트의 변경 내용을 DB에 동기화만 시킨다.(SQL쿼리 실행X) -트랜잭션이라는 작업 단위가 중요하다. -> commit 직전에만 동기화 된다.
-
영속성 컨텍스트spring/JPA 2022. 8. 13. 03:32
-JPA를 이용하는데 가장 중요한 단어 -'엔티티를 영구 저장하는 환경' 이라는 뜻 -Entity Manager.persist(entity) EntityManager 생성시 1:1로 context생성 생명주기 -비영속 : 영속성 컨텍스트와는 관련없는 새로운 상태 -영속 : 영속성 컨텍스트에 관리되는 상태 -준영속 : 영속성 컨텍스트에 관리되다 분리된 상태 -삭제 : 영속성 컨텍스트에서 삭제된 상태 SQL쿼리는 commit시 날라가고 persist한다고 날라가진 않음. 이점 -1차캐시 entity를 불러올 때 영속성 컨텍스트 내부의 1차캐시에 저장해서 처음 이후 사용시 SQL을 날려서 불러오지 않고 빠르게 불러온다. -동일성 보장 쉽게 말해 같은 Entity라고 해도 ==비교시엔 false가 뜨지만 영속성..