2010-07-07 14 views

risposta

17

Ciò richiederebbe una risposta piuttosto lunga. Invece di ripetere ciò che gli altri hanno detto meglio e in modo più dettagliato prima di me, ti collego ad alcune pagine pertinenti. Suggerisco di guardare attraverso di loro. Forse segui alcuni link aggiuntivi. Wikipedia è sempre un buon inizio. Se hai ancora domande sull'uno o sull'altro pattern dopo aver consultato i link, sentiti libero di tornare su SO e chiedere di nuovo. Ma se lo fai, cerca di restringerlo. È meglio fare più domande e concentrarsi su aspetti particolari piuttosto che aspettarsi che le persone scrivano un tema per te.

Object Relational Mapper

Object-Relational Mapping (ORM, O/RM, e O/R mapping) nel software per computer è una tecnica di programmazione per la conversione dei dati tra i sistemi di tipo incompatibili in database relazionali e object linguaggi di programmazione orientati.

Data Access Object

Usare un Data Access Object (DAO) per astrarre e incapsulare tutti gli accessi alla sorgente dati. Il DAO gestisce la connessione con l'origine dati per ottenere e memorizzare i dati.

DataMapper

Uno strato di Mappers (473) che sposta dati tra oggetti e un database mentre restano indipendenti l'uno dall'altro e il mappatore stessa.

Active Record

Un oggetto che avvolge una riga in una tabella di database o vista, incapsula l'accesso al database, e aggiunge logica di dominio su tali dati.

Table Data Gateway

Un oggetto che agisce come un gateway (466) ad una tabella di database. Un'istanza gestisce tutte le righe nella tabella.

+0

Mi sento come Table Data Gateway e DataMapper sono in gran parte lo stesso modello. Entrambi mantengono separati gli oggetti del dominio dalle query e hanno entrambi bisogno di un modo per mappare i dati di un oggetto nel database. L'unica differenza che vedo è che Table Data Gateway richiede di iniettare esplicitamente ciascun campo, mentre DataMapper può accettare un oggetto e gestire la mappatura da solo. È corretto? – AgmLauncher

+0

@AgmLauncher No. TableDataGateways gestisce le righe, non gli oggetti del dominio.Cioè, TableDataGateways restituisce una rappresentazione 1: 1 del record nel database. È solo quando inizi a mapparli a un oggetto Dominio a struttura indipendente che ottieni un DataMapper. – Gordon

+0

Vedo, quindi non sono pattern mutuamente esclusivi, il TDG sembra essere leggermente più basso di un DM, e un DM può fare uso di uno (o molti?) TDG se lo si desidera. È corretto? – AgmLauncher