영속성 컨텍스트는 JPA에서 엔티티를 관리하는 가상의 환경이라고 볼 수 있습니다. 쉽게 말해서, 엔티티의 생명주기를 관리하고 데이터베이스와의 상호작용을 중간에서 조율하는 일종의 메모리 공간이라고 생각하시면 됩니다.
이 영속성 컨텍스트는 몇 가지 중요한 특징을 가지고 있는데, 우선 1차 캐시 기능을 제공합니다. 한 번 조회한 엔티티는 이 캐시에 저장되어 있어서, 같은 엔티티를 다시 조회할 때 데이터베이스에 쿼리를 날리지 않고 캐시에서 바로 가져올 수 있고 이는 성능 향상에 도움이 됩니다.
또 다른 중요한 특징으로는 동일성 보장이 있습니다. 같은 엔티티를 여러 번 조회해도 항상 같은 인스턴스를 반환하기 때문에, 동일성 비교에 신경 쓰지 않아도 됩니다.
그리고 변경 감지라는 기능도 있습니다. 영속성 컨텍스트는 엔티티의 변경을 자동으로 감지해서 필요한 경우 데이터베이스에 반영하므로 개발자가 직접 update 쿼리를 작성할 필요가 없습니다.
지연 로딩도 영속성 컨텍스트의 중요한 기능 중 하나입니다. 연관된 엔티티를 실제로 사용할 때까지 데이터베이스 조회를 미룰 수 있어, 불필요한 데이터 로딩을 방지할 수 있습니다.
영속성 컨텍스트는 트렌잭션 범위와 밀접한 관련이 있습니다. 보통 트렌잭션이 시작될 때 생성되고, 트렌잭션이 끝날 때 함께 종료됩니다. 이 과정에서 변경된 엔티티들이 데이터베이스에 반영됩니다.
하지만 주의할 점도 있습니다. 너무 많은 엔티티를 영속성 컨텍스트에 담으면 메모리 사용량이 증가할 수 있습니다. 그래서 대량의 데이터를 처리할 때는 적절한 배치 처리나 플러시 전략이 필요합니다.
결론적으로, 영속성 컨텍스트는 JPA의 핵심 메커니즘으로, 개발자가 객체 지향적으로 프로그래밍을 할 수 있게 해주면서 동시에 데이터베이스와의 효율적인 상호작용을 가능하게 해주는 중요한 개념입니다.
'면접준비' 카테고리의 다른 글
JPA 엔티티 간 연관관계 매핑에 대해서 설명해 주세요. (0) | 2024.08.12 |
---|---|
JPA의 단일 엔티티 컬럼 매핑 방법에 대해서 설명해 주세요. (0) | 2024.08.12 |
JPA에서 의미하는 Persist에 대해 설명해주세요. (0) | 2024.08.11 |
Spring Data JPA에서의 애그리거트와 애그리거트 루트에 대해서 설명해 주세요. (0) | 2024.08.11 |
ORM이 무엇인지 설명해주세요 (0) | 2024.08.11 |