주로 호기심 때문에 도메인 로직에서 영속성 로직을 디커플링하는 저장소 패턴에 대한 Python 프레임 워크 또는 예제를 찾고있다.파이썬에서 저장소 패턴 구현하기?
이름은 "저장소 패턴", 아이디어는 "도메인 구동 형 디자인"책의 section 및 Martin Fowler에서 온다 (루비) 포스트 "Untangle Domain and Persistence Logic with Curator"에 나타납니다. 모델 클래스에는 지속성 로직이 없습니다. 대신 인스턴스가 모델 인스턴스의 메모리 내 컬렉션처럼 작동하는 저장소 하위 클래스를 선언합니다. 각 저장소는 SQL (다양한 스키마 규칙), Riak 또는 기타 noSQL 및 메모리 (캐싱 용)와 같은 다른 방법으로 모델을 유지합니다. 프레임 워크 규칙은 저장소 하위 클래스가 일반적으로 최소한의 코드 만 필요로한다는 것을 의미합니다. SQLRepository의 "WidgetRepository"하위 클래스를 선언하면 모델 위젯을 "widgets"라는 DB 테이블에 유지하고 열을 위젯 속성에 일치시키는 컬렉션을 제공합니다. 다른 패턴에서
차이 :
액티브 레코드 패턴 : 예를 들어, 장고 ORM. 응용 프로그램은 도메인 논리 및 지속성을위한 일부 메타 데이터가있는 모델 클래스 만 정의합니다. ORM은 퍼시스턴스 로직을 모델 클래스에 추가합니다. 이것은 도메인과 영속성을 하나의 클래스에 혼합합니다 (게시물에 따라 바람직하지 않습니다).
@marcin 덕분에 Active Record가 다양한 백엔드를 지원하고 .save (= "other_database") 함수를 사용할 때 저장소 패턴의 다중 백엔드 이점을 제공한다는 것을 알 수 있습니다.
그런 의미에서 저장소 패턴은 지속성 논리가 별도의 클래스로 이동 된 활성 레코드와 같습니다.
데이터 매퍼 패턴 : 예 : SQLAlchemy의 클래식 매핑. 이 앱은 데이터베이스 테이블과 모델에서 테이블로의 데이터 매퍼에 대한 추가 클래스를 정의합니다. 따라서, 모델 인스턴스는 테이블에 여러 방식으로 매핑 될 수있다. 레거시 스키마를 지원합니다. SQLAlchemy가 SQL 이외의 저장소에 매퍼를 제공한다고 생각하지 마십시오.
연구에서 제안하는 내용은 무엇입니까? 나는 방금 여러 가지 대안을 굉장히 많이 봤다. – Marcin
''python ''저장소 패턴 "에 대한 인터넷 검색은 구현을 수행하지 않습니다. 정확히 무엇을 검색 했습니까? – Graham
http://www.google.co.uk/search?q=django+orm+backend – Marcin