{"id":380,"date":"2009-07-31T11:00:00","date_gmt":"2009-07-31T11:00:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=380"},"modified":"2009-07-31T11:00:00","modified_gmt":"2009-07-31T11:00:00","slug":"thema-der-woche-repository-pattern-in-ddd-und-dao","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2009\/07\/thema-der-woche-repository-pattern-in-ddd-und-dao\/","title":{"rendered":"Thema der Woche: Repository-Pattern in DDD und DAO"},"content":{"rendered":"<p>Zur Abstraktion von Zugriffen auf konkreten Datastores (oft eine relationale Datenbank) haben sich DAOs (<a title=\"http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html\" href=\"http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html\">http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html<\/a>) etabliert. Im Domain Driven Design (DDD) gibt es etwas, das so aussieht wie ein DAO, und zu gro\u00dfer Diskussion in der Community f\u00fchrt.<\/p>\n<ul>\n<li>Wiederhole <a title=\"http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html\" href=\"http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html\">http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html<\/a><\/li>\n<li>Lese \u00fcber das Repository-Pattern im DDD: <a title=\"http:\/\/dddstepbystep.com\/wikis\/ddd\/blogged-the-repository-pattern.aspx\" href=\"http:\/\/dddstepbystep.com\/wikis\/ddd\/blogged-the-repository-pattern.aspx\">http:\/\/dddstepbystep.com\/wikis\/ddd\/blogged-the-repository-pattern.aspx<\/a><\/li>\n<\/ul>\n<p>Lassen sich hier schon Unterschiede herausstellen?<\/p>\n<p>Verfolge den \u201cStreit\u201d \u00fcber den Unterschied zwischen Repos\/DAO in den Blogs<\/p>\n<ul>\n<li><a title=\"http:\/\/blog.hibernate.org\/Bloggers\/RepositoryPatternVsTransparentPersistence\" href=\"http:\/\/blog.hibernate.org\/Bloggers\/RepositoryPatternVsTransparentPersistence\">http:\/\/blog.hibernate.org\/Bloggers\/RepositoryPatternVsTransparentPersistence<\/a> (initiiert vom Hibernate-Mitarbeiter <a href=\"http:\/\/blog.hibernate.org\/Bloggers\/Christian\">Christian Bauer<\/a>, der zum Teil sehr ruppig schreibt und reagiert)<\/li>\n<li><a title=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java.html\" href=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java.html\">http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java.html<\/a>, <a title=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_18.html\" href=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_18.html\">http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_18.html<\/a>, <a title=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_21.html\" href=\"http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_21.html\">http:\/\/ziobrando.blogspot.com\/2008\/01\/domain-driven-design-in-java_21.html<\/a><\/li>\n<\/ul>\n<p>Fragen:<\/p>\n<ul>\n<li>Was sagt Eric Evans zu der Diskussion? Kann ein Repo als DAO implementiert sein?<\/li>\n<li>Stehen Repo und DAO beide auf der Ebene vom Domain-Model?<\/li>\n<li>Warum sagen Kritiker, dass Repos eine zus\u00e4tzliche (unn\u00f6tige) Zwischenschicht sind?<\/li>\n<li>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?<\/li>\n<\/ul>\n<p>Optional. Wie sieht Paginierung aus? <a title=\"http:\/\/tech.groups.yahoo.com\/group\/domaindrivendesign\/message\/5795\" href=\"http:\/\/tech.groups.yahoo.com\/group\/domaindrivendesign\/message\/5795\">http:\/\/tech.groups.yahoo.com\/group\/domaindrivendesign\/message\/5795<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00dfer Diskussion in der Community f\u00fchrt. Wiederhole http:\/\/java.sun.com\/blueprints\/corej2eepatterns\/Patterns\/DataAccessObject.html Lese \u00fcber das Repository-Pattern im DDD: http:\/\/dddstepbystep.com\/wikis\/ddd\/blogged-the-repository-pattern.aspx Lassen sich hier schon Unterschiede herausstellen? Verfolge den [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[13],"tags":[],"class_list":["post-380","post","type-post","status-publish","format-standard","hentry","category-die-wochentliche-dosis-java"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=380"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/380\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}