Question

il est hors de question qu'un dao ne détienne aucun État.

Cependant, pour un accès plus facile à la classe, vaut-il mieux utiliser prototype (= nouveau à chaque fois) ou singleton?

la création d'objet simple est bon marché pour dao's .. elle ne contient généralement qu'une sessionfactory, Accéder à l'objet à partir d'une liste de singletons peut être tout aussi coûteux.

clarification: le but de cette question est, s’il existe une convention commune sur la portée des daos.

Était-ce utile?

La solution

Si votre question concerne l’architecture , , vous pouvez définir les DAO à la portée de l'unité de travail ou de la transaction que vous effectuez. Cela réduit le potentiel de pollution entre transactions et de problèmes de threads .

Si votre question concerne la performance , la réponse se trouve dans un profileur , ce qui vous donne des chiffres précis pour votre profil charge de travail .

Autres conseils

Ou utilisez le prototype en association avec un pool, comme décrit ici:

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

OU ici:

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

EDIT: évidemment, je suppose que le printemps est utilisé ici. Sinon, je m'excuse

je suis arrivé à la conclusion qu'il n'y a pas de "parfait" façon de décider cela. singleton scope est très probablement la mauvaise façon de procéder dans une application Web, car vous aurez différentes sessions - une par demande. Ainsi, dans une application Web, la portée de la requête peut constituer la réponse correcte, mais uniquement si vous l'utilisez exclusivement dans des requêtes et non dans des tâches en arrière-plan. La portée du prototype est viable - mais uniquement si vous n'y détenez pas de données complexes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top