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.

È stato utile?

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:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop-api.html#aop-ts-pool

O qui:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/classic-aop-spring.html#classic-aop-ts-pool

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ì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top