quale ambito dovrebbe avere un DAO in genere
-
03-07-2019 - |
Domanda
è fuori discussione che un dao non manterrà alcuno stato.
tuttavia, per un accesso più semplice alla classe, è meglio usare prototipo (= nuovo ogni volta) o singleton?
la semplice creazione di oggetti è economica per dao's .. in genere contiene solo una sessionfactory, l'accesso all'oggetto da un elenco di singoli potrebbe essere ugualmente costoso.
chiarimento: il focus di questa domanda è, se c'è una convenzione comune allo scoping di daos.
Soluzione
Se la tua domanda riguarda architettura , sceglierei i DAO di scoping sull'unità Unità di lavoro o Transazione che stai facendo. Ciò riduce il potenziale di inquinamento tra transazioni e problemi di threading .
Se la tua domanda riguarda rendimento , la risposta si trova all'interno di un profiler , che ti dà numeri accurati per il tuo particolare carico di lavoro .
Altri suggerimenti
Oppure usa il prototipo in combinazione con un pool come descritto qui:
O qui:
EDIT: ovviamente, presumo che la primavera sia usata qui. Altrimenti mi scuso
Sono giunto alla conclusione che non esiste un "perfetto" modo di decidere questo. l'ambito singleton è molto probabilmente il modo sbagliato di farlo in un'app Web, poiché avrai sessioni diverse, una per richiesta. quindi in un webapp - l'ambito della richiesta può essere la risposta corretta, ma solo se lo si utilizza esclusivamente nelle richieste e non nelle attività in background. l'ambito del prototipo è praticabile, ma solo se non si conservano dati complessi lì.