영속성 컨텍스트 : "엔티티를 영구 저장하는 환경"
눈에 보이지 않는 논리적인 개념
엔티티 매니저를 통해 영속성 컨텍스트에 접근
EntityManager.persist(entity);
//객체를 생성한 상태(비영속)
Member member = new Member();
member.setId("member1");
member.setUsername(“회원1”);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//객체를 저장한 상태(영속)
em.persist(member);
영속성 컨텍스트의 이점
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");
find('member2')가 1차 캐시에 없음
DB에 조회(쿼리로 조회)
1차 캐시에 저장
반환
find('member2')가 1차 캐시에 존재
1차 캐시?
트랜잭션을 시작하고 종료할 때까지만 1차 캐시 유효, 성능을 얻을 수 있는 장점은 크지 않음
2차 캐시?
애플리케이션 범위의 캐시로 공유캐시
애플리케이션 종료할때까지 캐시가 유지