Zur Abstraktion von Zugriffen auf konkreten Datastores (oft eine relationale Datenbank) haben sich DAOs (http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html) etabliert. Im Domain Driven Design (DDD) gibt es etwas, das so aussieht wie ein DAO, und zu großer Diskussion in der Community führt.
- Wiederhole http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
- Lese über das Repository-Pattern im DDD: http://dddstepbystep.com/wikis/ddd/blogged-the-repository-pattern.aspx
Lassen sich hier schon Unterschiede herausstellen?
Verfolge den “Streit” über den Unterschied zwischen Repos/DAO in den Blogs
- http://blog.hibernate.org/Bloggers/RepositoryPatternVsTransparentPersistence (initiiert vom Hibernate-Mitarbeiter Christian Bauer, der zum Teil sehr ruppig schreibt und reagiert)
- http://ziobrando.blogspot.com/2008/01/domain-driven-design-in-java.html, http://ziobrando.blogspot.com/2008/01/domain-driven-design-in-java_18.html, http://ziobrando.blogspot.com/2008/01/domain-driven-design-in-java_21.html
Fragen:
- Was sagt Eric Evans zu der Diskussion? Kann ein Repo als DAO implementiert sein?
- Stehen Repo und DAO beide auf der Ebene vom Domain-Model?
- Warum sagen Kritiker, dass Repos eine zusätzliche (unnötige) Zwischenschicht sind?
- Einige EJB-Advocates injizieren gerne bei Java EE 5 Anwendungen den Entity-Manager in den DAO bzw. sehen den EM als DAO selbst, den man dann in Session-Beans injiziert. Ist das ein Design im Sinne von DDD?
Optional. Wie sieht Paginierung aus? http://tech.groups.yahoo.com/group/domaindrivendesign/message/5795