JPA

JPA 소개 / 영속성 관리

hyokong 2025. 5. 1. 16:16

JPA

객체를 자바 컬렉션에 저장하듯이 DB에 저장

영속성 컨텍스트

Entity를 영구 저장하는 환경(EntityManager를 사용하여 저장)

  • 1차 캐시
    • 1차 캐시에 저장된 entity를 find() 하면 DB조회 없이 바로 반환
  • 동일성(idnetity) 보장
    • 같은 트랜잭션 내부에서는 같은 엔티티 반환
  • 쓰기 지연
    • DB 조작들을 트랜잭션 커밋 순간 한번에 수행
  • 변경 감지(Dirty Checking)
    • flush 시점에 엔티티 변경사항을 자동으로 UPDATE SQL 생성하여 반영
    • 스냅샷 활용
  • 지연로딩(lazy loading)
    • 객체가 실제 사용될 때 로딩

Entity 생명주기

  • 비영속(new/trasient)
    • JPA에서 관리되지 않는 상태 (new로 객체만 생성)
  • 영속(managed)
    • 영속성 컨텍스트에서 관리되는 상태(persist(), find()..)
  • 준영속(detached)
    • 영속성 컨텍스트에 저장되었다가 분리된 상태(더 이상 영속성 컨텍스트가 관리하지 않는 것)
  • 삭제(removed)
    • 삭제된 상태
    • 영속성 컨텍스트에서 바로 제거