quelle portée devrait normalement avoir un DAO
-
03-07-2019 - |
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.
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:
OU ici:
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.