WEB/DataBase

JPA- 영속성 컨텍스트의 동일성 보장

hwahaha 2024. 7. 29. 21:53

영속성 컨텍스트 사용시 이점으로 언급되는 동일성 보장 왜 이점인지 알아보자 !!

 

영속성 컨텍스트 개념

- 영속성 컨텍스트는 엔티티를 영구 저장하는 환경으로 엔티티 매니저를 통해 접근이 가능

 

동일성 보장?

- 영속성 컨텍스트 안에 데이터가 하나씩 존재하도록 하는 규칙

- 중복 불허용 및 데이터 관리에 최적

 

궁금점

 

영속성 컨텍스트가 없어도 primary key가 있으면 동일성을 보장하지 않을까?

 

 DB에서 직접 조회하는 경우

- 동일한 ID를 가진 데이터를 여러번 조회하면 새로운 객체로 반환

User user1 = database.findUserById(1);
User user2 = database.findUserById(1);

 

 >> user1과 user2는 같은 primary key를 가진 다른 메모리의 객체

 

 

영속성 컨텍스트를 사용하는 경우

- 한 번 조회한 데이터를 캐시에 저장, 같은 ID로 조회할 때 항상 같은 객체를 반환

User user1 = entityManager.find(User.class, 1);
User user2 = entityManager.find(User.class, 1);