06. 영속성 컨테스트 1

김성수·2023년 4월 3일
0

⚡ 생각대로 살지 않으면 사는대로 생각한다.

⚡ 나는 어차피 잘 될 놈이다. 이미 잘 되고 있고, 계속해서 잘 되고 있다.


JPA에서 가장 중요한 2가지

  • 객체와 관계형 데이터베이스 매핑(Object Relational Mapping)
  • 영속성 컨텍스트

엔티티 매니저 팩토리와 엔티티 매니저

고객의 요청이 올 때마다 엔티티 매니저 팩토리엔티티 매니저를 생성하고, 엔티니 매니저는 내부적으로 데이터베이스 커넥션을 이용해서 DB를 사용한다.

영속성 컨텍스트

  • JPA를 이해하는데 가장 중요한 용어
  • 엔티티를 영구 저장하는 환경
  • EntityManager.persist(entity)
    • entity가 DB에 저장되는 것 처럼 보였지만, 실상은 DB에 저장하는 것이 아니라, 영속성 컨텍스트를 통해서 entity영속화한다는 의미다.
    • 정확히는 entity영속성 컨텍스트라는 곳에 저장한다는 의미다.
  • 영속성 컨텍스트논리적인 개념
    • 눈에 보이지 않고, 엔티티 매니저를 통해서 영속성 컨텍스트접근한다.

✅엔티티 매니저는 사실 영속성 컨텍스트와 1:1이다.
즉 엔티티 매니저를 생성하면, 그 엔티티 매니저 내부에 영속성 컨텍스트가 생성된다.

엔티티의 생명주기

  • 비영속(new/transient)
    • 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
  • 영속(managed)
    • 영속성 컨텍스트에 관리되는 상태
  • 준영속(detached)
    • 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제(removed)
    • 삭제된 상태

참고

비영속

  • 객체를 생성만 한 상태

영속

  • 객체를 생성하고, 객체를 영속성 컨텍스트에 저장한 상태
  • 영속 상태가 되었다고, DB에 쿼리가 날라가는 것이 아니다!!
  • 트랜잭션을 커밋하는 시점에 쿼리가 날라간다!

준영속

  • 엔티티를 영속성 컨텍스트에서 분리한다.

삭제

  • 객체를 삭제한 상태
  • DB에 저장된 객체를 삭제함.

영속성 컨텍스트의 이점

  • 1차 캐시
  • 동일성(identity) 보장
  • 트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
  • 변경 감지(Dirty Checking)
  • 지연 로딩(Laza Loading)
profile
쌩수 Git >> https://github.com/SsangSoo?tab=repositories

0개의 댓글