JPA [기본] 내부동작방식

신재원·2023년 1월 13일
0

JPA 기본

목록 보기
3/31

JPA 구동 방식

  • 간단히 말해서 EntityManagerFactory 라는 공장에서 찍어내서 실행한다.

JPA에서 가장 중요한 2가지

  • 객체와 관계형 데이터베이스 매핑하기
  • 영속성 컨텍스트

JPA 영속성 컨텍스트

  • EntityManager.persist (entity); = DB에 저장 X, 영속성 컨텍스트 안에서 entity를 "영속" 하는것
  • "엔티티를 영구 저장하는 환경" 이라는 뜻이다

엔티티 매니저 ? 영속성 컨텍스트 ?

  • 영속성 컨텍스트는 논리적인 개념
  • 눈에 보이지 않는다.
  • 엔티티 매니저(em)를 통해서 영속성 컨텍스트에 접근하는것이다.

엔티티 생명주기

    1. 비영속 : 영속성 컨텍스트와 전혀 상관없는 새로운 상태
    1. 영속 : 영속성 컨텍스트에 관리되는 상태
    1. 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태
    1. 삭제 : 삭제된 상태
1.
ex) // 객체만 생성한 상태 (비영속)
Member member = new Member();
member.setId("hello");
member.setUserName("회원1");
2.
ex) // 객체만 생성한 상태 (영속)
Member member = new Member();
member.setId("hello");
member.setUserName("회원1");

EntitiyManager em = emf.createEntityManager();
em.getTransaction().begin();

// 객체를 저장한 상태(영속), DB에 저장 X
em.persist(member);

1차 캐시에서 조회

  • 1차캐시에 Map 캐시가 있다고 생각, Map<"해당 엔티티 클래스", "PK값">: 영속된 엔티티값
  • 영속 엔티티의 동일성 보장, 같은 엔티티를 "==" 비교할경우 true
  • !! 1. 1차 캐시에 없음 -> 2. DB에서 조회 -> 3. 1차 캐시에 저장 -> 4. 반환

Entity 클래스 기본 생성자

정리

  • 정적인 매핑과정, 영속성 컨텍스트(실제 동작하는 메커니즘)
  • 영속성 컨텍스트는 눈에 보이지 않는다, 엔티티 메니저를 통해 접근
  • 수정 = 변경감지 (더티체킹)

0개의 댓글