자바 ORM 표준 JPA 프로그래밍 - 영속성 컨텍스트(JPA)

eunsiver·2022년 3월 8일
0

영속성 컨텍스트 : "엔티티를 영구 저장하는 환경"

  • 눈에 보이지 않는 논리적인 개념

  • 엔티티 매니저를 통해 영속성 컨텍스트에 접근

EntityManager.persist(entity);

//객체를 생성한 상태(비영속) 
Member member = new Member(); 
member.setId("member1"); 
member.setUsername(“회원1”);

EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//객체를 저장한 상태(영속)
em.persist(member);

영속성 컨텍스트의 이점

  • 1차 캐시(영속성 컨텍스트 내부 엔티티를 보관하는 저장소)
  • 동일성 보장
  • 트랜잭션을 지원하는 쓰지 지연
  • 변경 감지
  • 지연 로딩

1차 캐시에서 조회

Member member = new Member();
member.setId("member1");
member.setUsername("회원1");
//1차 캐시에 저장됨
em.persist(member);
//1차 캐시에서 조회
Member findMember = em.find(Member.class, "member1");

데이터베이스에서 조회

Member findMember2 = em.find(Member.class, "member2");

  1. find('member2')가 1차 캐시에 없음

  2. DB에 조회(쿼리로 조회)

  3. 1차 캐시에 저장

  4. 반환

  5. find('member2')가 1차 캐시에 존재


1차 캐시?

트랜잭션을 시작하고 종료할 때까지만 1차 캐시 유효, 성능을 얻을 수 있는 장점은 크지 않음

2차 캐시?

애플리케이션 범위의 캐시로 공유캐시
애플리케이션 종료할때까지 캐시가 유지

profile
Let's study!

0개의 댓글