Ciao Stefano,
secondo me la tua implementazione è probabilmente più vicina al pattern Repositoryhttp://www.martinfowler.com/eaaCatalog/repository.html che alla Identity Map vera e propria. Il compito di quest'ultimo, infatti, è esclusivamente quello di garantire che la database identity e la reference identity coincidano all'interno del medesimo contesto transazionale, non di gestire vari sistemi di ricerca. Per questa ragione, quindi, tante volte basta un semplice dictionary.

Però, ovviamente, resto tuned perché è comunque un discorso molto interessante!!
3.165 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

Forse ti confondi con il Pattern IdentityField http://www.martinfowler.com/eaaCatalog/identityField.html. Il pattern Identity Map serve per assicurare che un solo oggetto sia caricato in memoria e questo è quello che faccio. Il metodo di ricerca mi seve solo per essere in grado di identificare l'oggetto in più modi, ma lo scopo rimane quello.

Byez

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
No Stefano, non mi confondevo :)

Assicurare che DB identity e reference identity coincidano vuol dire avere una sola istanza in memoria per riga del db all'interno della stessa transazione: diciamo la stessa cosa!

Ciò che rimarcavo è solo l'introduzione di questi metodi di ricerca, che sono al di fuori delle responsabilità dell'identityMap, che imho dovrebbe permettere ricerche solo per chiave (la quale è un identityField) e che dovrebbe essere estremamente veloce nell'effettuare tali ricerche (e, non ho visto la tua implementazione, ma l'utilizzo di campi NON UNICI come chiavi di ricerca mi fa pensare che tu non possa avvalerti di un dictionary).

Tutto qui! Si fa pour parler!
3.165 messaggi dal 06 settembre 2002
Contributi | Blog
Se non ti eri confuso chiedo scusa.

I metodi di ricerca mi servono in casi in cui l'oggetto sia ricercato per campi diversi dall'id.
Es. Una persona può essere cercata per id o per codice fiscale. Nel datalayer ho 2 metodi di ricerca FindById e FindByCode. A questo punto gli oggetti già caricati sono si in una lista, ma identificabili per 2 campi a seconda del tipo di ricerca. Ecco il perchè della cosa. Se hai altre vie suggerisci pure

Byez

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Ma figuriamoci, mica servono scuse!! :)

Quello che voglio dire è che la tua necessità non la soddisfi con una IdMap, ma con un altro tipo di oggetto, tutto qui. La IdMap non è una cache, il caching è una sorta di "effetto collaterale", passami il termine.

Supponi tu voglia ricercare le persone che hanno un certo cognome: in uno scenario simile, con IdMap ti assicuri che, una volta recuperati i dati da db, se quella chiave primaria esiste all'interno della IdMap, piuttosto che costruire una nuova istanza, devi aggiornare quella esistente ed includere quest'ultima nella lista di risultati.

Che poi la IdMap non sia ciò che risolve la tua specifica problematica è un altro paio di maniche :)

Ciao Stef, spero di vederti a MI tra un mesetto!
3.165 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

io non ricerco nella idmap le persone con un certo cognome, non ho una PrimaryKey leggo da db e poi le confronto se le ho già nella lista in memoria per evitare il doppio oggetto. Il mio discorso parte prima della query e solo nel caso in cui cerco per una key (e ci possono essere più chiavi per una classe).
Comunque che la IdMap faccia anche da cache è normale, è lo stesso Fowler a dirlo verso la fine della sezione dedicata all'identitymap.

btw, sto lavorando per milano ma venendo da roma ci sono cose che devo sistemare, vedremo...

bye

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Ma se leggi da db e hai già la chiave, che bisogno hai di cercare all'interno della idmap per codicefiscale?

Boh, secondo me non ho capito ciò che dici, mi rendo conto che a chiacchiere e senza codice non è semplice esprimersi su questi concetti.

Vabbé, vorrà dire che aspetterò con curiosità che pubblichi qualcosa :-)

Grazie della piacevole chiacchierata, ciapz!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.