반응형

2018/11/25 2

영속성 컨텍스트 (Persistence Context) 란 (2)

플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영한다. 플러시가 호출되면 1. 변경감지가 동작해서 영속성 컨텍스트 내 모든 엔티티들을 대상으로 스냅샷과 비교해 변경사항을 찾고, 수정된 엔티티들은 UPDATE문을 생성하여 SQL저장소에 등록한다. 2. SQL저장소의 쿼리를 데이터베이스에 전송한다. (등록, 수정, 삭제 쿼리) 영속성 컨텍스트를 플러시하는 방법은 3가지가 있다. 1. 직접 호출 엔티티매니저의 flush 메소드를 호출하는 것으로 테스트, 다른 프레임워크와 JPA를 함께 사용할 때를 제외하곤 거의 사용하지 않는다. 2. 트랜잭션 커밋 시 데이터베이스에 어떤 변경도 없이 트랜잭션만 커밋해서는 아무것도 바뀌는게 없다. 때문에 항상 데이터베이스 커밋 전엔 영속성 컨텍스트의 내용을 flush하..

Back-End/JPA 2018.11.25

영속성 컨텍스트 (Persistence Context) 란 (1)

우리 말로 표현해보자면 엔티티를 영구 저장하는 환경으로 논리적인 개념에 가깝다. 엔티티매니저로 엔티티를 저장하거나 조회하면 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 기본적으로 엔티티매니저가 생성될 때 하나의 영속성 컨텍스트가 만들어지며, 여러 개의 엔티티매니저가 하나의 영속성 컨텍스트에 접근할 수도 있다. persist 메소드를 "회원 엔티티를 저장한다"보다 정확히 얘기하면 "엔티티매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다"로 말할수있다. 엔티티의 생명주기 비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 순수한 객체인 상태 영속 (managed) : 영속성 컨텍스트에 저장된 상태, 영속성 컨텍스트에 의해 관리되는 상태 준영속 (detached) : 영속성 ..

Back-End/JPA 2018.11.25