Relazione tra UnitOfWork e DataMapper

0

Ho studiato DDD per 1.5 settimane ora, e ho incrociato l'uso del modello Unit Of Work insieme al pattern Data Mapper. Ho capito perché sono entrambi importanti e quando usarli ma, non ho potuto trovare da nessuna parte in che modo il Data Mapper può "sapere" che un metodo di salvataggio, ad esempio, è stato chiamato nel mezzo di una transazione o meno. C'è qualcosa di sbagliato nel fatto che Data Mapper sia a conoscenza dell'Unità di lavoro? Qualcosa mi dice che non è la strada giusta da percorrere.

    
posta Lucas Piske 20.07.2016 - 02:54
fonte

2 risposte

2

Il limite per una unità di lavoro è tempo. Risponde alla domanda: che cosa stiamo cambiando tutti in questa transazione?

Il limite per un Data Mapper è lo spazio. Risponde alla domanda: cosa fa parte di questa unica struttura di dati?

L'unità di lavoro viene utilizzata per evitare di colpire troppo spesso il database inviando ogni piccola porzione di informazioni una alla volta. Il data mapper traduce la struttura di quei piccoli pezzi in memoria per la struttura di quei piccoli pezzi sul disco e viceversa.

Questi non hanno bisogno di conoscersi l'un l'altro. Una singola unità di lavoro può coinvolgere molti mappatori di dati. Un singolo mappatore di dati può coinvolgere molte unità di lavoro. I due sono ortogonali tra loro.

    
risposta data 20.07.2016 - 03:53
fonte
0

Il data mapper deve conoscere l'unità di lavoro. In genere si passa la UoW al mappatore utilizzando DI.

I understood why they are both important and when to use them but, I couldn't find anywhere how the Data Mapper can "know" that a save method, for example, was called in the middle of a transaction or not.

Una singola istanza UoW rappresenta una transazione aziendale attiva, il fatto che il mapper abbia un'istanza UoW valida implica che si è in una transazione commerciale e che le cose non sono ancora state commesse; anche se la transazione è impegnata o meno non è di alcuna preoccupazione per il mappatore. La gestione del tempo UoW avviene ad un livello più alto (ad esempio per un'app Web è solitamente richiesta UoW).

    
risposta data 20.07.2016 - 06:31
fonte