Potete, per favore, spiegarmi le differenze tra i seguenti rappresentanti di database, ad esempio, in PHP .:Differenze ORM/DAO/DataMapper/ActiveRecord/TableGateway?
ORM DAO DataMapper ActiveRecord TableGateway
Eventuali esempi sarebbe apprezzato.
Potete, per favore, spiegarmi le differenze tra i seguenti rappresentanti di database, ad esempio, in PHP .:Differenze ORM/DAO/DataMapper/ActiveRecord/TableGateway?
ORM DAO DataMapper ActiveRecord TableGateway
Eventuali esempi sarebbe apprezzato.
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 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.
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.
Uno strato di Mappers (473) che sposta dati tra oggetti e un database mentre restano indipendenti l'uno dall'altro e il mappatore stessa.
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.
Un oggetto che agisce come un gateway (466) ad una tabella di database. Un'istanza gestisce tutte le righe nella tabella.
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
@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
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