[TIL 61일차] 영속성 컨텍스트와 트랜잭션

이건·2024년 8월 19일

영속성 컨텍스트(Persistence Context)

영속성 컨텍스트(Persistence Context)는 주로 엔터티 프레임워크(Entity Framework)와 같은 객체 관계 매핑(ORM) 시스템에서 사용되는 개념으로, 데이터베이스와의 상호작용을 관리하는 역할을 한다. 이는 데이터베이스의 엔터티 상태를 추적하고, 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 효율적으로 처리할 수 있도록 돕는다.

영속성 컨텍스트의 주요 기능은 다음과 같다:

  1. 엔터티 상태 관리: 영속성 컨텍스트는 엔터티의 생명주기를 관리한다. 엔터티는 새로운 상태(Transient), 영속적 상태(Persistent), 분리 상태(Detached), 삭제 상태(Removed)로 나뉘며, 이러한 상태에 따라 데이터베이스와의 상호작용이 달라진다.

  2. 변경 감지: 영속성 컨텍스트는 엔터티의 속성이 변경되었는지를 감지한다. 이를 통해 변경된 내용을 데이터베이스에 반영할 수 있다.

  3. 트랜잭션 관리: 영속성 컨텍스트는 데이터베이스와의 트랜잭션을 관리하여, 여러 작업이 성공적으로 완료되거나 모두 실패하도록 보장한다.

  4. 쿼리 최적화: 영속성 컨텍스트는 엔터티를 메모리에 캐싱하여, 동일한 엔터티에 대한 쿼리를 최적화한다. 이를 통해 데이터베이스에 대한 불필요한 호출을 줄일 수 있다.

  5. 엔터티 연관 관계 관리: 엔터티 간의 관계를 관리하여, 관련된 엔터티를 쉽게 로드하고 조작할 수 있도록 한다.

영속성 컨텍스트는 DB와의 상호작용을 단순화하고, 개발자가 데이터베이스 작업을 보다 직관적으로 수행할 수 있도록 도와준다.

트랜잭션(transaction)

트랜잭션(transaction)은 데이터베이스에서 일어나는 하나의 작업 단위를 의미한다. 트랜잭션은 데이터베이스의 일관성과 무결성을 유지하기 위해 중요한 역할을 하며, 여러 개의 작업을 하나의 단위로 묶어 처리한다. 트랜잭션은 ACID 속성을 따라야 한다:

  1. 원자성(Atomicity): 트랜잭션 내의 모든 작업이 성공적으로 완료되거나, 하나라도 실패하면 모든 작업이 취소되어야 한다. 즉, 트랜잭션은 전체가 실행되거나 전혀 실행되지 않아야 한다.

  2. 일관성(Consistency): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 한다. 데이터베이스가 트랜잭션을 처리하기 전과 후의 상태가 모두 일관성을 가져야 한다.

  3. 고립성(Isolation): 동시에 실행되는 트랜잭션은 서로에게 영향을 미치지 않아야 한다. 하나의 트랜잭션이 완료되기 전까지 다른 트랜잭션은 그 결과를 볼 수 없다. 이를 통해 데이터의 충돌을 방지한다.

  4. 지속성(Durability): 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 한다. 시스템 장애가 발생하더라도 완료된 트랜잭션의 데이터는 손실되지 않아야 한다.

트랜잭션은 일반적으로 다음과 같은 경우에 사용된다:

  • 은행 거래: 계좌에서 돈을 이체할 때, 출금과 입금이 모두 성공해야만 거래가 완료된다.
  • 온라인 쇼핑: 주문이 완료되면 재고 수량이 줄어들어야 하며, 이는 트랜잭션으로 처리된다.

트랜잭션 관리를 통해 데이터베이스는 더욱 안정적이고 신뢰성 있는 서비스를 제공할 수 있다.

0개의 댓글