JPA

    영속화와 GeneratedValue 전략

    영속화와 GeneratedValue 전략

    [개요] User 엔티티의 테스트를 진행 하던 중 다음 코드에서 의문이 생겼다. id를 넣어주지 않았는데 어떻게 getId()가 동작하지 !? 이를 위해 먼저 영속화에 대한 개념을 알아보자. 영속성 컨텍스트 영속성 컨텍스트는 엔티티를 보관하는 저장소라고 할 수 있다. JPA에서는 엔티티를 영속성 컨텍스트에 넣어서 관리하기 때문에 매우 중요하다. 영속성 컨텍스트는 쓰기 지연 저장소와, 1차 캐시로구성되어 있다. memberA를 영속화 (persist())했을 때 일어나는 과정을 위의 그림을 통해 살펴보자. persist(memberA)를 호출한다. 1차 캐시에 memberA를 저장한다. 동시에 SQL문을 생성하여 쓰기 지연 SQL 저장소에 저장한다. Transaction이 끝나는 시점에 쓰기 지연 저장소에..