2011-01-10 1 views
28

나는 너희들이 DataMapper에 대해 생각하고 새로운 통해 어떤 혜택을 가져다 무엇에 대한 호기심, 그리고 난 당신의 의견을 주셔서 감사 레일 3.DataMapper 3

에서 액티브을 개선.

답변

2

레일 2에서 Active Record를 사용하고 Merb와 Rails 3-DataMapper에서 DM/Rails 3을 매일 사용했습니다. AR3에 대해 읽은 적이 있지만 하나의 작은 프로젝트 (사내 앱)에서만 사용했습니다.

DM의 strategic eager loading과 관련된 유일한 차이점을 발견했습니다. 그것은 사람이 바라는 것과 그것이하는 것, 옳고 그름을하는 일은 거의 없습니다. FM을 사용합니다.

명시 적으로 eager loading in AR으로 무엇이 발생해야하는지에 대해서는 의문의 여지가 없습니다. 그것이하는 일은 무엇인지 말하고 (일반적으로) 말합니다. 시간의

  1. 하지 미미한 양의 의사 열망 로딩 산재
  2. 코드를 조회 과다의 원인을 찾고 보냈다 : "자동"열망 로딩이 좋은 소리 동안

    , 나는 그것이 나를 위해이 개 부정적인 결과를 가지고 찾아 관계를 구체화하고 폐기하기 위해 해킹하는 것, 때로는 "붙잡고"스스로 문서화하지 않는 방식으로 신원지도를 준비하는 것입니다.

그렇지 않으면 AR과 DM이 다른 반점을 가진 동일한 짐승 인 것으로 나타났습니다. 말과 달리 Sequel.

+0

속편을 사용합니까? 그렇지 않다면 왜 안 되겠습니까? – gucki

+1

@ gucki 1 년 전에 프로젝트에 사용했지만 이후 DM으로 전환했습니다. 나는 우리가 너무 잘하는 문제를 상기하지 않는다. 나는 생각하기를 계속 유지하기 전에 관계를 다루는 데 어려움을 겪었을지 모른다. 그러나 나는 그것에 맹세하고 싶지 않다. Sequel 자체에는 아무런 문제가 없었 음을 기억합니다 (예 : 버그). 문제는 설계 임피던스 불일치입니다. 요즘 새 프로젝트를 시작했다면 요즘 ORM 거짓말에 질 렸기 때문에 Sequel을 다시 검토 할 것입니다. –

11

나는 AR 대 DM을 선호한다. AR은 SQL 주위의 래퍼 인 반면 DM은 실제로 ORM이라고 느낍니다. DM은 데이터 저장소간에 쉽게 전환 할 수 있습니다. DM의 쿼리 구문은 훨씬 동 질적입니다. SEL (전략적 열렬한로드)은 또한 DM을 AR보다 오브젝트 저장소처럼 보이게합니다.

또한 DM 클래스는 프런트의 속성을 정의하므로 훨씬 쉽게 읽을 수 있습니다. 나는 DM 세계에 와서 이주를 놓친 적이 없다. (비록 당신이 정말로 원한다면 당신이 가질지라도). 레일 3은 거의 독점적으로 DM을 사용하고 있습니다.

+0

DM 구현 비용이 너무 비쌉니다. 당신이 사용하기를 원할지도 모르는 모든 보석들에 관해서는, 그러나 당신은 AR을 가지고 있다고 가정하고 보석들을 해킹 할 필요가 있습니다. 예를 들어, Devise는 훌륭한 사용자 인증 보석이지만 AR을 원하고 이미 제 3 자 devise-dm 보석이 있지만 제 3 자이며 누가 언제 지원을 중단 할 것인지 또는 Device가 업데이트되는 래퍼없이 업데이트 될 것입니다 . 이것은 단지 상황의 예입니다. –

+3

devise-dm이 정상적으로 작동합니다. DM에는 제 3 자 보석도 꽤 많이 있습니다. 시간이 지남에 따라 DM이 성숙되면서 이러한 문제는 사라질 것입니다. – piyush

+0

나는 datamappers가 보이는 반면 클래스 테이블 상속을 처리 할 수있는 activerecord를 아직 보지 못했습니다. 아무도 이것을 확인할 수 있습니까? 고마워 –