Bonjour,
Je ne sais pas trop où posté ce post... alors n'hésitez pas à le déplacer.
voici le contexte :
une table avec 2 colonnes :
- id (integer, auto-increment, pk, unique)
- libelle (varchar2(100), unique, not-null)
comme vous le voyez, la colonne "libelle" est unique.
Je préfère ajouter une clé primaire "id" pour les relations futures de cette table avec les autres tables.
je dois implémenter avec Struts/hibernate l'IHM de gestion de cette table :
create, read, update et delete
j'ai les class et package suivantes :
xxx.model.Table : objet de persistance mappé avec hibernate
<Interface>xxx.dao.TableDao : (couche DAO)
Table create(Table);
void update(Table)
void delete(Table);
Table find(id);
List<Table> search();
boolean isLibelleExiste(libelle);
xxx.dao.impl.TableDaoImpl implements TableDao
<Interface>xxx.service.TableService (couche service utilisée par le Controller)
Table create(Table);
void update(Table)
void delete(Table);
Table find(id);
List<Table> search();
xxx.service.impl.TableServiceImpl implements TableService
xxx.form.TableForm extends ActionForm: formulaire Struts
xxx.action.TableCreerAction extends Action : Controller de création
La question que je me pose est la suivante :
où coder le fait qu'un libellé doit être unique lors de la création/modification?
1) Je fais un service "boolean isLibelleExiste(libelle);" qui est appelé dans la méthode validate du formulaire
2) Dans les méthodes create et update du service, je fais appel à la méthode "getDao.isLibelleExiste(libelle)"
3) c'est dans la couche DAO que je fais le contrôle?
3) faire 1) et 2) et 3).
La solution 1 ne me convient pas.... car le service est alors dépendant de l'IHM...
Je trouve que le faire dans la couche DAO... c'est trop bas... et ça enlève le rôle de la couche service
en fait, la question est : à qui puis-je faire confiance?
qu'en pensez-vous?
Partager