2011-01-10 2 views

Répondre

2

J'ai utilisé Active Record dans Rails 2 et DataMapper dans Merb et Rails 3-I utilisent maintenant DM/Rails 3 quotidiennement. J'ai lu sur AR3 mais seulement utilisé dans un petit projet (une application interne.)

J'ai trouvé la seule différence dont je me soucie vraiment est DM strategic eager loading. Il fait rarement ce que l'on espère et ce qu'il fait, bien et mal, il le fait avec FM. Avec eager loading in AR explicitement eager loading in AR, il ne fait aucun doute ce qui devrait se produire: il dit ce qu'il fait et (habituellement) fait ce qu'il dit.

Bien que les mots « automatique » chargement désireux de bien, je trouve qu'il a deux résultats négatifs pour moi:

  1. quantités non négligeables de temps consacré à la recherche des sources d'excès d'interrogation
  2. Code jonché de pseudo chargement impatient des hacks où les relations se matérialisent et sont jetées juste pour les amorcer et la carte d'identité d'une manière qui parfois ne colle pas et ne s'auto-documente jamais.

Sinon, je trouve que AR et DM sont les mêmes bêtes avec des taches différentes. Contrairement à dire, Sequel.

+0

Utilisez-vous la suite? Si non, pourquoi pas? – gucki

+1

@gucki Je l'ai utilisé pour un projet il y a plus d'un an mais je suis passé à DM depuis. Je ne me rappelle pas vraiment les problèmes que nous avions trop bien, je pense que cela aurait pu être des problèmes de relations avant de persister, mais je ne voudrais pas jurer de le faire. Je me souviens qu'il n'y avait rien de mal avec Sequel en soi, par exemple, des bugs, et les problèmes étaient des inadéquations de conception-impédance. Si je commençais un nouveau projet aujourd'hui, je reviendrais sûrement sur Sequel car je suis très malade du mensonge de l'ORM ces jours-ci. –

11

Je préfère DM à AR. Je pense que DM est en fait un ORM alors que AR est juste un emballage autour de SQL. DM fait est très facile de basculer entre les magasins de données. La syntaxe de requête de DM est beaucoup plus homogène, etc. La SEL (load avide stratégique) permet également à DM de ressembler plus à un magasin d'objets qu'à AR.

De plus, les classes DM définissent les propriétés à l'avant et rendent le code beaucoup plus lisible. Je n'ai jamais manqué de migrations après mon arrivée dans le monde DM. (même si vous pouvez les avoir si vous le souhaitez vraiment). Avec les rails 3, j'utilise presque exclusivement du DM.

+0

Ne trouvez-vous pas que le coût de la mise en œuvre du DM est trop élevé? En ce qui concerne toutes ces gemmes que vous pourriez vouloir utiliser, mais ils supposent que vous avez AR, puis vous devez pirater les gemmes et ainsi de suite. Par exemple Devise est un bon utilisateur, mais il veut AR et bien qu'il y ait déjà un tiers-partenaire, il est un tiers et qui sait quand il arrêtera de le supporter ou quand Devise sera mis à jour sans que le wrapper ne soit mis à jour . C'est juste et exemple de situation. –

+3

devise-dm fonctionne bien. DM a également beaucoup de gemmes de tiers. Avec le temps, au fur et à mesure que DM mûrira, ces problèmes disparaîtront. – piyush

+0

Je n'ai pas encore vu d'enregistrement actif qui puisse gérer l'héritage de Table Class, alors que les datamappers semblent le faire. quelqu'un peut-il confirmer cela? THX –