10
votes

Convention de dénomination Dao Spring-hibernate Dao?

est-il typique de nommer Daos de la manière suivante:

UserDAO - interface
UserDAOImpl - implements UserDAO


0 commentaires

4 Réponses :


4
votes

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.

Maintenant, lorsque vous avez un DAO générique, vous pourriez aller pour:

  • dao (interface)
  • sessionDao et entitymanagerdao - pour utiliser session ou entityManager

    et, bien sûr, utilisez le DAO uniquement par interface. Vous pouvez facilement basculer entre les implémentations.

    (je préfère effectivement il est inférieur - dao , bien que ce soit une abréviation; et le Impl suffixe)


0 commentaires

9
votes

C'est généralement ce que j'utilise. Parfois, le préfixe défaut comme defaultUserDao 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.

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.


1 commentaires

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)?



8
votes

Il y a deux conventions que j'ai vues:

  1. Foodao pour l'interface et la restauration alimentaire pour la mise en œuvre
  2. ifoodao pour l'interface et la nourriture pour la mise en œuvre

    Le premier a ses racines à Corba; Ce dernier est une convention Microsoft Com / .NET. (Merci à Pascal pour la correction.)

    "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: xxx


2 commentaires

Nitpick: Ce dernier est une convention Microsoft COM .


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 #.



1
votes

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 );
  }

  // ...
}


0 commentaires