est-il typique de nommer Daos de la manière suivante:
UserDAO - interface UserDAOImpl - implements UserDAO
4 Réponses :
Tout d'abord - vous n'avez peut-être pas vraiment besoin d'une classe DAO pour chacune de vos classes. Ne répétez pas l'article DAO! explique ce qui est un Générique Dao. Vous vous demandez comment nommer le code de la batterie de la batterie n'est pas productif. P>
Maintenant, lorsque vous avez un DAO générique, vous pourriez aller pour: p>
dao code> (interface) li>
-
sessionDao code> et entitymanagerdao code> - pour utiliser session code> ou entityManager code> li> li> li>
ul>
et, bien sûr, utilisez le DAO uniquement par interface. Vous pouvez facilement basculer entre les implémentations. P>
(je préfère effectivement il est inférieur - dao code>, bien que ce soit une abréviation; et le Impl code> suffixe) p>
C'est généralement ce que j'utilise. Parfois, le préfixe défaut em> comme La plupart du temps, je pense que ces deux peuvent être utilisés de manière interchangeable, mais dans certaines situations, on fournit un peu plus de clarté que l'autre. p> defaultUserDao code> peut avoir plus de sens si vous créez une interface que vous attendez d'autres que d'autres implémentent, mais vous fournissez la mise en œuvre de référence. P>
Merci! En outre, aurait-il de sens de mettre mes interfaces DAO dans un package DAO et de la mise en œuvre dans un paquet DAO.Hibernate (afin que la mise en œuvre puisse être échangée ultérieurement)?
Il y a deux conventions que j'ai vues:
Le premier a ses racines à Corba; Ce dernier est une convention Microsoft Com / .NET. (Merci à Pascal pour la correction.) P>
"Ne répétez pas la DAO" est une bonne idée. Personnellement, je pense que cet article est plus complexe que nécessaire. Il y a un moyen de le faire sans réfléchir dans les résultats que je préfère. Si vous utilisez Hibernate, la requête par exemple peut être un excellent moyen de le faire simplement. L'interface ressemblerait plus à ceci: p>
Nitpick: Ce dernier est une convention Microsoft COM B>.
Merci pour la correction, Pascal. Je suis un Latecomer à toutes les choses Microsoft, alors je ne suis donc que récemment consciente de celle-ci via C #.
J'ai également été éventail de GenericDao et GenericDaoimpl -Convention avec un support de classes d'assistance génériques, si la sauvegarde ou la suppression nécessite des actions supplémentaires pour certaines classes persistantes:
public class GenericDaoImpl<T> extends HibernateTemplate { public void setPersistListeners(List<PersistListener> listeners) { this.persistListeners = new GenericInterfaceHandler( listeners, PersistListener.class ); } // hibernate updates the key to the object itself public T save(T item) { getSession().save( item ); List<PersistListener<T>> listeners = this.persistListeners.getAll( item ); for ( PersistListener<T> listener : listeners ) listener.persist( item ); } // ... }