본문 바로가기
인프런 강의/실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[JPA]영속성 컨텍스트

by 해삼2 2024. 1. 29.
728x90
반응형
영속성 컨텍스트

 

*영속성 컨텍스트란

더보기

엔티티를 영구 저장하는 환경을 의미

 

*영속성 컨텍스트 주요 기능

더보기

객체 추적 (Object Tracking): 

영속성 컨텍스트는 어떤 객체가 변경되었는지 추적합니다. 

이러한 변경 내용은 데이터베이스에 동기화되기 전까지 메모리에 유지됩니다.

지연 로딩 (Lazy Loading): 

영속성 컨텍스트는 필요한 순간까지 연관된 객체를 로딩하지 않고, 실제로 사용될 때 로딩합니다. 

이를 통해 성능을 최적화할 수 있습니다.

동일성 (Identity): 

영속성 컨텍스트는 객체의 동일성을 유지합니다. 

즉, 같은 엔터티를 나타내는 두 객체가 메모리 상에서는 동일한 객체로 취급됩니다.

트랜잭션 관리: 

영속성 컨텍스트는 트랜잭션 범위 내에서 데이터베이스와의 작업을 관리합니다. 

트랜잭션이 커밋될 때 변경된 객체들을 데이터베이스에 반영합니다.

캐싱 (Caching): 

영속성 컨텍스트는 자주 사용되는 데이터를 캐싱하여 데이터베이스에 대한 불필요한 조회를 피하고 

성능을 향상시킵니다.


엔티티의 생명주기

 

• 비영속 (new/transient)

영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 

 

• 영속 (managed)

영속성 컨텍스트에 관리되는 상태 
영속이라는 것은 엔티티를 persist로 영속(저장)이나 수정 등을 시킨다는 뜻 
실제로 persist를 한다고 해서 DB에 저장되는 것이 아니라 해당 엔티티를 내부에 저장 시키는 것 

DB저장은 트랜잭션 이 담당 한다.  
해당 persist된 엔티티가 저장이되면 JPA는 자동으로 쿼리문을 생성하여 저장소에 저장을 해주고,

트랜잭션은 이 저장소에 있는 값을 가지고 디비에 저장 해주는 역할
또한 JPA는 값을 바꾸면 트랜잭션의 커밋 시점에 값이 변경 된다.

하지만 JPQL이나 Plush를 사용하면 트랜잭션이 커밋 전에 해당 값을 할수 있다. 

테스트 이외에는 사용할 일 거의 없음
(데이터베이스에 동기화 하는 작업을 뜻함)

 

• 준영속 (detached)

영속성 컨텍스트에 저장되었다가 분리된 상태 

 

• 삭제 (removed)

삭제된 상태


 

 

*수업 내용 총 정리

영속성 컨텍스트 라는 것은 엔티티 즉 객체를 영구 저장하는 환경을 의미하며 주요 기능으로는 해당 엔티티(객체)를 트랜잭션을 통해 데이터베이스와의 작업을 관리하는 역할을 주로 합니다. 또한 엔티티의 생명 주기로는 객체만 있는 상태로 트랜잭션이 아직 일어나지 않고 있는 상태를 비영속 상태라고 하고 반대로 트랜잭션이 일어나 데이터베이스와 상호작용 하는 상태 즉 영속되어 있는 상태이며 이 밖에도 해당 객체가 영속성에 저장되었다가 분리된 상태인 준영속상태 삭제된 상태인 삭제상태 가 있습니다.

 

728x90
반응형