Spring Data JPA

Spring Data JPA

JPA(Java Persistence API) - 플러시

플러시란?영속성 컨텍스트의 변경내용을 데이터베이스에 반영 영속성 컨텍스트의 쓰기 지연 SQL 저장소에 있던 SQL을 데이터베이스에 반영데이터 베이스 트랜잭션이 commit되면 자동적으로 flush()가 발동한다.그렇다면 flush()가 발동하면 어떤 일이 일어날까?변경감지수정된 엔티티 쓰기 지연 SQL 저장소에 등록쓰기 지연 SQL 저장소의 쿼릴르 데이터베이스에 전송(등록, 수정, 삭제 쿼리)영속성 컨텍스트 플러시하는 방법em.flush() - 직접 호출(거의 사용할 일이 없다)트랜잭션 커밋 - 플러시 자동 호출JPQL 쿼리 실행 - 플러시 자동 호출em.flush()em.persist()해도 DB에 쿼리가 날라가지 않는다 하지만 먼저 SQL을 보고싶은 경우에 사용 가능Member member = new..

Spring Data JPA

영속성 컨텍스트의 특징

JPA를 사용한다는 것은 영속성 컨텍스트를 사용한다는 것이고 그럼 영속성 컨텍스트의 이점을 누릴 수 있다는 말과 같다고 생각합니다.영속성 컨텍스트 특징1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 지연변경 감지지연 로딩1. 1차캐시1차 캐시에 들어있는 entity의 경우 DB를 거치지 않고 조회가 가능합니다.하지만 1차 캐시에 없는 member2를 조회한다면?em.find(Member.class, "member2")엔티티매니저를 통해서 entity를 조회하고 1차 캐시에 없다면DB를 조회해서 entity를 찾는다. 찾은 entity를 1차 캐시에 저장을 하고반환합니다.2. 동일성 보장JPA의 영속성 컨텍스트는 동일성을 보장합니다.Tip)동일성: 주소값이 같은 것을 의미 == 비교동등성: 값이 같은 것을 의..

Spring Data JPA

영속성 컨텍스트란

JPA에서 가장 중요한 2가지객체와 관계형 데이터베이스 매핑하기영속성 컨테이너영속성 컨테이너를 제대로 이해하면 JPA가 내부적으로 어떻게 동작하는지 알 수 있다. 즉, JPA를 더 정확하고 효율적으로 사용이 가능하다.EntityManager.persist(entity);DB에 데이터를 저장하는 것이 아니라 JPA의 영속성 컨텍스트에 데이터를 저장영속성 컨텍스트논리적인 개념엔티티 매니저를 생성할 때 하나의 영속성 컨텍스트가 생성된다.엔티티 매니저를 통해서 관리, 접근이 가능하다.엔티티의 생명주기비영속(new/transient)한 번도 영속성 컨텍스트에 들어가지 않은 상태영속(managed)영속성 컨텍스트에 저장된 상태준영속(detached영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed)영속성 ..

여행하는 개발자(SOO)
'Spring Data JPA' 카테고리의 글 목록 (2 Page)