Persistence Context1
영속성 컨텍스트1
Last updated
영속성 컨텍스트1
Last updated
JPA에서 가장 중요한 2가지
객체와 관계형 데이터베이스 매핑하기(Object Relational Mapping) : 정적
영속성 컨텍스트 : 엔티티를 영구 저장하는 환경 실제 동작하는 매커니즘은 영속성 컨텍스트를 통해 이루어진다!
EMF를 통해 고객 요청 올 때마다 EM 생성한다. EM은 내부적인 커넥션(커넥션 풀)을 사용해서 DB를 사용한다.
em.persist(entity) : 엔티티를 DB에 저장한다는 뜻이 아니라 영속성 컨텍스트에 저장한다! 그러므로 em.persist하기 전(before) 후(after)로 출력문을 남겨서 디버깅해보면 예상되는 결과는 before -> SQL -> after 이지만 실제 결과는 before -> after -> SQL 이다! 엔티티가 영속 상태가 되는 시점이 아니라 트랜잭션이 커밋되는 시점에 SQL 쿼리가 DB에 들어가고 업데이트된다!
엔티티의 생명주기
비영속(new/transient) : 영속 컨텍스트에 없고, JPA와 관계 없는 상태(JPA가 처리하지 않는다.)
영속(managed) : EM 안에 영속 컨텍스트에 엔티티를 넣는 개념! 영속 컨텍스트를 통해 JPA가 엔티티를 관리! em.persist(member);
준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 em.detach(member);
삭제(removed) : 삭제된 상태 em.remove(member);