NEONKID / python-mf-data

Python Micro Framework Data
14 stars 0 forks source link

Unit Of Work 패턴을 위한 커넥션 객체 일부 변경 적용 필요성 #8

Closed NEONKID closed 2 years ago

NEONKID commented 2 years ago
  1. Connection Pool 갯수랑 Recycle 주기 적용을 위한 파라미터
  2. autocommit, autoflush 옵션에 대한 사용자 정의 파라미터.

Unit Of Work 패턴은 각 도메인이 커밋, 롤백 등을 자동화 하기 위해 사용하는 패턴으로써 UoW 내에 Repository를 두고 사용하는 패턴이다. 그러나 기존의 Python Micro Framework Data는 이러한 세션이 모두 고정되어 있기 때문에 UoW 패턴 구현이 어려웠다.

따라서 sessionmaker인 session_factory를 public member로 전환하고, 개발자가 session 생성의 주기를 정할 수 있도록 자율화하면 UoW 패턴 구현이 쉽다고 본다.

NEONKID commented 2 years ago

두 가지의 세션 조건으로 나눠 볼 수 있다.

1번째는 yield 패턴을 사용하여 raise 즉, 오류가 발생한 경우 자동으로 rollback을 사용하는 패턴 즉, 지금의 async context manager로 갖춰져 있는 session 메서드를 이용하는 방법이다.

2번째는 session_factory를 직접 사용해 UoW 클래스에 enter exit 메서드를 구현하여 사용하고자 하는 컴포넌트가 async with 혹은 with 문을 사용해서 session을 공급받아 사용하는 방법이다.

2번째를 사용하는 경우 매 트랜잭션마다 try raise 처리를 해줘야 하며 raise가 발생하는 경우 무작정 rollback 하기보다는 다른 트랜잭션을 추가 반복시킬 수 있다는 점이 있다. 하지만 그렇지 않은 경우는 매번 raise 처리를 해줘야 한다.