Persistence Context1

Mina Park·2022년 8월 27일
0

영속성 컨텍스트의 이점

  • 1차 캐시
  • 동일성 보장(identity)
  • 트랜잭션을 지원하는 쓰기 지연(Transactional write-behind)
  • 변경 감지(Dirty Checking)
  • 지연 로딩(Lazy Loading)
public class jpaMainPersistence1 {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        EntityManager em = emf.createEntityManager(); //행동 단위마다 entity manager 생성

        EntityTransaction tx = em.getTransaction();
        tx.begin(); //트랜잭션 시작

        try {
            //비영속 상태
            Member member = new Member();
            member.setId(101L);
            member.setName("HelloJPA");

            //영속 상태로 변경(객체를 저장한 상태) => 이 단계에서 DB에 쿼리 호출 X
            em.persist(member);

            //영속성 컨텍스트 안에 존재 => 1차 캐시에서 결과를 가져옴(DB에 쿼리 호출 X)
            Member findMember = em.find(Member.class, 101L);

            //커밋하는 단계에서 DB에 쿼리 호출
            tx.commit();

        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close(); //자원 사용 종료 후에는 entity manager 클로즈
        }

        emf.close();
    }


}

0개의 댓글