1차 캐시

엔티티 조회, 1차 캐시

Untitled

JPA를 활용해서 객체를 불러오거나 생성할 경우에 영속성 컨텍스트 안에 있는 1차 캐시에 저장된다.

//엔티티를 생성한 상태(비영속)
Member member = new Member();
member.setId("member1");
member.setUsername("회원1");
//엔티티를 영속
em.persist(member);

1차 캐시에서 조회

Untitled

1차 캐시에 담겨있는 데이터를 DB에 조회 요청할 경우에 쿼리문이 발생하지 않고 1차 캐시에서 데이터를 꺼내서 전달한다.

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

데이터베이스에서 조회

Untitled

조회하는 값이 1차 캐시에 없을 경우 DB에 조회하는 쿼리문이 발생하고 가져온 데이터를 1차 캐시에 저장한 후 객체로 반환한다.

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