2009-08-09 6 views
2

Si je dois enregistrer un objet dans la base de données qui a une relation, est-ce que je dois faire tout l'enregistrement lui-même, ou déléguer à d'autres DAO. S'il doit déléguer à d'autres DAO, cela devrait-il être fait dans le DAO lui-même, ou dans une couche au-dessus (comme une couche de service)? Je voudrais utiliser un ORM pour cela, sauf qu'en PHP, rien de bon n'existe encore.Un grand DAO ou plusieurs plus petits?

Répondre

4

Je pense que la réponse dépend de la propriété.

Si le parent possède les enfants, et qu'il n'y a aucune possibilité de créer un enfant sans parent, alors cela devrait être juste ParentDao et pas du tout ChildDao.

Si vous pouvez créer un enfant sans parent, vous aurez besoin d'un ChildDao pour ses opérations CRUD. Dans ce cas, vous pourriez demander à ParentDao de posséder une référence à ChildDao et de lui attribuer des opérations CRUD Child.

0

Je suis d'accord avec la réponse de duffymo - mais je suis intéressé à votre déclaration

J'utiliser un ORM pour cela, sauf que dans PHP, rien de bon existe encore

Je l'ai utilisé à la fois Doctrine et Propel et les ont trouvés à la fois très capables. Ma préférence personnelle est Doctrine, bien qu'une quantité significative d'améliorations ait été faite dans Propel 1.3

+0

J'ai vraiment hâte de Doctrine 2.0, mais j'ai vraiment besoin de persistance transparente, ce que Doctrine <2.0 ou Propel n'offrent pas. J'ai fondamentalement besoin de quelque chose de plus comme Hibernate. – blockhead