ActiveRecord 패턴은 도메인 개체 또는 데이터 매퍼 패턴과 어떻게 다릅니까?

StackOverflow https://stackoverflow.com/questions/93773

문제

나는보고 있었다 데이터매퍼, 언뜻 보면 ActiveRecord ORM 패턴을 사용하는 것으로 나타났습니다.다른 사람들은 DataMapper 및/또는 Domain Object 패턴을 사용한다고 말했습니다.

이들패턴의 차이점은 무엇인가요?

도움이 되었습니까?

해결책

두 패턴의 주요 차이점은 다음과 같습니다.

  • ActiveRecord에는 모든 비즈니스 논리와 데이터베이스에 자체를 저장/업데이트하는 방법, user.getLinkToProfile() 및 User::find(1), User::save(user)를 모두 알고 있는 하나의 도메인 개체가 있습니다.

  • DataMapper 패턴에는 user.getLinkToProfile()(또는 이와 유사한 것)과 같은 모든 비즈니스 로직을 보유하지만 다음을 알고 있는 하나의 도메인 객체가 있습니다. 아무것도 아님 문제의 데이터베이스에 대해 이 외에도 저장, 업데이트, 선택 등을 담당하는 매퍼 개체가 있습니다.UserMapper::find(1), UserMapper.save(user)를 포함하는 데이터베이스의 사용자 개체

DataMapper는 잠재적으로 ActiveRecord보다 더 복잡하지만 ActiveRecord를 사용하는 것보다 도메인 모델과 데이터베이스를 비동기식으로 개발하는 것이 훨씬 쉽습니다.

다른 팁

활성 레코드는 매우 무겁습니다. 데이터 매퍼와 도메인 개체는 이러한 문제를 분리하므로 "도메인" 또는 "엔티티" 개체에 대해 다양한 측면을 수행하는 보다 정의된 코드 세트를 갖게 됩니다.

나는 개인적으로 당신이 요청한 것보다 도메인 객체, 데이터 매퍼로 분리하는 것을 선호하며 아마도 어셈블리 패턴과 심지어 데이터 전송 패턴을 사용하여 데이터베이스와 애플리케이션의 상위 계층 사이의 데이터에 발생하는 일을 명확하게 분리하는 것을 선호합니다. .

...우아하고 단순한 분리가 항상 도움이 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top