Pensez à une simple opération d'insertion utilisateur. Mes classes liées au printemps pour faire ce travail sont UserController
, UserService
, UserServiceImpl
, UserDAO
, UserDAOImpl
.Quelle est la meilleure pratique pour le modèle de service-dao?
Au niveau du contrôleur, j'appelle userService.insert(new User())
et dans la méthode userService.insert()
j'appelle userDAO.insert(user)
. Je pense qu'il y a une duplication de méthode à ce modèle.
Existe-t-il un moyen d'éviter la duplication de méthode? Peut être mon codage est défectueux. J'attends vos réponses, expériences ...
Merci à l'avance ...
oui à certaines méthodes de service il y a différentes étapes d'interaction OAC mais% 70 de mes méthodes de service ont juste une ligne quelque chose comme xDAO.saveOrUpdate() ou xDAO. delete(), etc ... Donc je me demande pourquoi je n'utilise pas directement les méthodes DAO à ces méthodes de service% 70. Qu'est-ce que tu penses? – user1153321
l'exposition directe du DAO sous-jacent (disons, l'invocation directe du contrôleur) n'est pas nécessairement une mauvaise chose.Cela dépend de votre cas d'utilisation, de la complexité de l'application et de votre plan «futur». Personnellement, j'aime l'abstraction d'une couche de «service» au milieu car elle me donne la possibilité de «grandir» dans le futur (effectuer plus d'opérations que la simple DAO) et supporter la testabilité. Cela peut être aussi discutable que l'interface. > Argument d'implémentation, "si je ne fais jamais plus de x, pourquoi créer une interface?" –