2008-10-08 3 views

답변

7

나는 그 단순성 때문에 ActiveRecord 패턴을 정말로 좋아합니다. 그러나, 나는 더 큰 웹 애플 리케이션을 위해 그것에서 멀어지고있다. ActiveRecord 기반 프로젝트가 더욱 복잡 해짐에 따라 ActiveRecord 객체가 커지고 너무 많은 코드가 포함되어 있다는 것을 알게되었습니다.

리포지토리 패턴 (기본적으로 데이터 매퍼)을 도입함으로써 도메인 모델 클래스가보다 단순 해지고 데이터 매핑/데이터 액세스 논리가 분리되어 유지됩니다.

정적 메서드를 사용하기 때문에 ActiveRecord 개체를 모방하는 것은 매우 어렵습니다 (불가능합니까?).

+0

흥미로운 아이디어! 감사합니다, Mike – ep3static

+1

혼란 스럽습니다 - 왜 활성 레코드는 정적 메서드를 사용해야합니까? –

+0

필자가 본 AR 구현 (Ruby AR 및 Castle Active Record for .NET)은 모두 쿼리를위한 정적 메서드 (Person.FindById (123))를 사용합니다. PoEAA에서 올바르게 기억한다면, 이는 Active Record 패턴의 정의의 일부입니다. 참조 : http://en.wikipedia.org/wiki/Active_record_pattern – Mike

0

camping을 사용하여 PDE 빌드 위에 통합 된 빌드 시스템을 작성했습니다. 처음에는 ActiveRecord를 사용했지만 데이터베이스에 대한 비 블로킹 스레드 안전 액세스가 필요하므로 Data Mapper를 사용하도록 전환했습니다.

나는 슬픔에 잠겨 있었지만 최신 버전은 꽤 안정적으로 보입니다.

1

테이블 데이터 게이트웨이와 행 데이터 게이트웨이를 제공하는 프레임 워크는 기본 클래스 ('id'가 아닌 경우)와 이름을 모두 지정해야하기 때문에 쉽게 사용할 수있는 기본 제공 클래스로 사용됩니다. 테이블 (클래스 이름과 같지 않은 경우). 그러나 최근에 리팩토링하는 과정에서 도메인과 데이터베이스간에 더 복잡한 매핑이 발생해야하는 순간 이러한 패턴이 저하되기 시작한다는 사실을 발견했습니다.

예를 들어, 현재 하나의 웹 사이트 코드를 리팩터링하여 단일 테이블 상속 (상속 매핑 사용)을 사용할 수 있도록 데이터 매퍼를 사용하고 있습니다. 기본적으로 데이터베이스와 도메인 간의 관계가 일대일보다 복잡해질 때마다 필자는 데이터 맵퍼 사용을 강력하게 고려할 것입니다.