2011-01-10 16 views

risposta

2

ho usato attivo Record in Rails 2 e DataMapper in Merb e Rails 3 Io uso DM/Rails 3 al giorno. Ho letto su AR3 ma l'ho usato solo in un piccolo progetto (un'app interna).

Ho scoperto che l'unica differenza che mi interessa è il DM strategic eager loading. Raramente fa quello che si spera e quello che fa, giusto e sbagliato, lo fa con FM.

Con esplicito eager loading in AR, non c'è dubbio che cosa dovrebbe accadere: dice quello che fa e (di solito) fa quello che dice.

Mentre "automatico" eager loading suona bene, trovo che ha due risultati negativi per me:

  1. quantità non trascurabili di tempo speso alla ricerca di fonti di eccessiva interrogazione
  2. codice disseminato di pseudo eager loading hack in cui le relazioni vengono materializzate e scartate proprio per innescarle e la mappa dell'identità in modi che di tanto in tanto non si "attaccano" e non sono mai auto-documentanti.

In caso contrario, trovo AR e DM per essere le stesse bestie con punti diversi. A differenza di dire, Sequel.

+0

Utilizzi il sequel? Se no, perché no? – gucki

+1

@gucki L'ho usato per un progetto più di un anno fa, ma sono passato a DM da allora. Davvero non ricordo i problemi che stavamo avendo troppo bene, io * penso * potrebbe essere stato problemi a gestire le relazioni prima di persistere, ma non vorrei giurarlo. Ricordo che non c'era nulla di sbagliato in Sequel di per sé, ad esempio bug, ei problemi erano disallineamenti di impedenza di progettazione. Se stessimo iniziando un nuovo progetto oggi, rivederei di nuovo Sequel dato che sono molto stufo della menzogna dell'ORM in questi giorni. –

11

Preferisco DM a AR. Sento che DM è in realtà un ORM mentre AR è solo un wrapper attorno a SQL. DM fa è molto facile passare da un archivio dati all'altro. La sintassi di query di DM è molto più omogenea ecc. SEL (carico strategico di interesse) rende DM più simile ad un archivio di oggetti che ad AR.

Inoltre, classi DM definire proprietà fino anteriore e rende il codice molto più leggibile. Non ho mai perso le migrazioni dopo essere venuta nel mondo DM. (anche se potresti averli se lo desideri davvero). Con le guide 3, utilizzo quasi esclusivamente DM.

+0

Ragazzi, non trovate che il costo dell'attuazione di DM sia troppo alto. In termini di tutte quelle gemme che potresti voler usare, ma assumono che tu abbia AR e quindi hai bisogno di hackerare le gemme e così via. Ad esempio Devise è una buona gemma utente, ma vuole AR e sebbene ci sia già una terza parte devise-dm gem è una terza parte e chissà quando smetteranno di supportarla o quando Devise verrà aggiornato senza che il wrapper venga aggiornato . Questa è solo una situazione esemplificativa. –

+3

devise-dm funziona correttamente. DM ha anche un sacco di gioielli di terze parti. Con il tempo, man mano che DM matura, questi problemi svaniranno. – piyush

+0

Devo ancora vedere un attiverecord in grado di gestire l'ereditarietà delle tabelle di classe, mentre i datamappers sembrano. qualcuno può confermarlo? grazie –

Problemi correlati