Entity Framework 에서의 Persistence

해질녘·2022년 1월 24일
0

닷넷 (.NET)

목록 보기
3/12

이 문서는 ef tutorial 해당 링크를 번역 및 보충한 것입니다.

Entity Framework 에서의 Persistence 지속성

Connected Scenario

컨텍스트 클래스의 인스터가 엔티티 복구와 저장에 쓰인다. 엔티티는 수명 내내 추적된다. 이는 어플리케이션이 로컬 데이터베이스를 이용하거나, 같은 네트워크 내의 데이터베이스를 사용할 때 유용하다.

Entity Framework tutorial 4.3 dbcontext

장점

  • 빠르다
  • EF 컨텍스트가 모든 엔티티를 추적하고, 엔티티에 변화가 일어났을 때 적절한 상태를 알아서 세팅해준다.

단점

  • 컨텍스트가 활성화되기 위해, 데이터베이스와의 연결이 항상 유지되어야 한다.
  • 자원이 더 필요하다.

Disconnected Scenario

비연결 시나리오에서, 데이터베이스에서 복구, 저장할 때 각각 컨텍스트의 인스턴스가 필요하다. 각 read(복구), write(저장) 작업에 대해 새 컨텍스트 인스턴스가 생성되고, 작업이 끝나고 버려진다.

Entity Framework tutorial 4.3 dbcontext

위 그림이랑 다른 점은 Context가 2개가 되었다는 거...

비연결 시나리오는 복잡하다. 컨텍스트 인스턴스가 엔티티를 추적하지 않는다. 따라서 개발자가 SaveChanges()를 통해 엔티티 수정 시 적절한 상태를 설정해주어야 한다. 위 그림에서 어플리케이션이 복구할 때 Context 1을 이용하고, CUD 작업을 할 때 Context 2를 이용한다. 비연결 시나리오에서, Context 2는 과거에 엔티티 그래프에 수행된 작업을 알지 못한다.

비연결 시나리오는 웹 어플리케이션이나 어플리케이션에 remote database를 연결하는 경우 유용하다.

장점

  • 연결 시나리오보다 자원 적게 사용
  • 데이터베이스에 open connection 할 필요 없음

단점

  • 엔티티 저장 전 적절한 상태 세팅 필요
  • 연결 시나리오보다 느림

사용

데이터베이스는 비싼 자원이다. 즉, 데이터베이스에서 데이터를 가져오고 저장하는 작업은 시간이 많이 든다. 그러므로, 일반적으로 데이터베이스와의 커넥션을 최소화 하는 방향으로 이용한다.

그런 이유에서 비연결 시나리오가 일반적으로 쓰인다.

연결 시나리오는 추적할 필요가 없어 편하긴 하겠지만, 낭비가 있으므로 사용하지 않는다. 개인용으로 제작하는 소프트웨어라면 모를까...

0개의 댓글