ActiveRecord에서 DataMapper 패턴으로 리팩토링 했습니까? 어떤 조건으로 전환하라는 메시지가 나타 났습니까? 저는 주로 웹 기반 응용 프로그램에 관심이 있지만 어떤 환경에서든 그러한 이동에 수반되는 어려움을 알고 싶습니다.ActiveRecord에서 DataMapper로 리팩토링
답변
나는 그 단순성 때문에 ActiveRecord 패턴을 정말로 좋아합니다. 그러나, 나는 더 큰 웹 애플 리케이션을 위해 그것에서 멀어지고있다. ActiveRecord 기반 프로젝트가 더욱 복잡 해짐에 따라 ActiveRecord 객체가 커지고 너무 많은 코드가 포함되어 있다는 것을 알게되었습니다.
리포지토리 패턴 (기본적으로 데이터 매퍼)을 도입함으로써 도메인 모델 클래스가보다 단순 해지고 데이터 매핑/데이터 액세스 논리가 분리되어 유지됩니다.
정적 메서드를 사용하기 때문에 ActiveRecord 개체를 모방하는 것은 매우 어렵습니다 (불가능합니까?).
camping을 사용하여 PDE 빌드 위에 통합 된 빌드 시스템을 작성했습니다. 처음에는 ActiveRecord를 사용했지만 데이터베이스에 대한 비 블로킹 스레드 안전 액세스가 필요하므로 Data Mapper를 사용하도록 전환했습니다.
나는 슬픔에 잠겨 있었지만 최신 버전은 꽤 안정적으로 보입니다.
테이블 데이터 게이트웨이와 행 데이터 게이트웨이를 제공하는 프레임 워크는 기본 클래스 ('id'가 아닌 경우)와 이름을 모두 지정해야하기 때문에 쉽게 사용할 수있는 기본 제공 클래스로 사용됩니다. 테이블 (클래스 이름과 같지 않은 경우). 그러나 최근에 리팩토링하는 과정에서 도메인과 데이터베이스간에 더 복잡한 매핑이 발생해야하는 순간 이러한 패턴이 저하되기 시작한다는 사실을 발견했습니다.
예를 들어, 현재 하나의 웹 사이트 코드를 리팩터링하여 단일 테이블 상속 (상속 매핑 사용)을 사용할 수 있도록 데이터 매퍼를 사용하고 있습니다. 기본적으로 데이터베이스와 도메인 간의 관계가 일대일보다 복잡해질 때마다 필자는 데이터 맵퍼 사용을 강력하게 고려할 것입니다.
- 1. DataMapper로 무작위 데이터 선택
- 2. Modama를 사용하여 Datamapper로 등록 정보 정의
- 3. ActiveRecord에서 habtm으로 이중 결합
- 4. ActiveRecord에서 비트 마스크로 검색
- 5. 복잡한 ActiveRecord에서 MongoID 쿼리
- 6. ActiveRecord에서 SHOW FIELDS 피하기
- 7. CastleProject ActiveRecord에서 일괄 저장
- 8. 리팩토링 도구?
- 9. 리팩토링 브라우저
- 10. Ruby에서 리팩토링
- 11. 리팩토링 질문
- 12. LINQ 리팩토링
- 13. 리팩토링 도구
- 14. ActiveRecord에서 퍼센트 완료를 찾으려면 어떻게해야합니까?
- 15. 레일즈의 ActiveRecord에서 여러 sum() s
- 16. activerecord에서 활성 장르를 얻는 방법?
- 17. ActiveRecord에서 가장 새로운 개체 찾기
- 18. ActiveRecord에서 find_by_field가 제대로 작동하지 않습니다.
- 19. 레일즈 시간대가 ActiveRecord에서 무시 되었습니까?
- 20. Castle ActiveRecord에서 삽입 또는 업데이트
- 21. 매우 결합 코드 리팩토링
- 22. 리팩토링 C++ CDT
- 23. 코드 복제 및 리팩토링
- 24. 열린 닫힌 원칙, 리팩토링
- 25. Vim의 Ruby 리팩토링
- 26. Eclipse 리팩토링 라이브러리
- 27. id 유형 리팩토링
- 28. LINQ 널 리팩토링 코드
- 29. 자동 리팩토링 도구?
- 30. PostgreSQL SProcs를 리팩토링
흥미로운 아이디어! 감사합니다, Mike – ep3static
혼란 스럽습니다 - 왜 활성 레코드는 정적 메서드를 사용해야합니까? –
필자가 본 AR 구현 (Ruby AR 및 Castle Active Record for .NET)은 모두 쿼리를위한 정적 메서드 (Person.FindById (123))를 사용합니다. PoEAA에서 올바르게 기억한다면, 이는 Active Record 패턴의 정의의 일부입니다. 참조 : http://en.wikipedia.org/wiki/Active_record_pattern – Mike