<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: The DAO is dead! Long live the DAO!</title>
	<atom:link href="http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/</link>
	<description>www.olivergierke.de</description>
	<lastBuildDate>Thu, 25 Feb 2010 19:31:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Von: Oliver Gierke</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-757</link>
		<dc:creator>Oliver Gierke</dc:creator>
		<pubDate>Wed, 17 Feb 2010 15:12:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-757</guid>
		<description>Good point! I am actually entirely with you when it comes to question look for solutions to solve the problem in a more elegant way. So the benefits I&#039;ve pointed out were meant to be the &lt;em&gt;driver&lt;/em&gt; to use a DAO instead of throwing all your query logic into a service, it was not meant the other way round. Although I&#039;m really fond of what already exists in the .NET space regarding LINQ and hope to see something similar in Java, I&#039;m wonder if that wil revolutionize the way we access data to the extend you describe. I see a clear benefit in integrating the querying into the host language I still see benefits in separating the declartion of what to query from the actual usage of the data. So IMHO hiding the declarative stuff behind a simple interface method is not much more than naming a query and then using it in a type safe manner by its name, which addresses the SOC mentioned in the original post.

Anyway, thanks for your thought!
Ollie</description>
		<content:encoded><![CDATA[<p>Good point! I am actually entirely with you when it comes to question look for solutions to solve the problem in a more elegant way. So the benefits I&#8217;ve pointed out were meant to be the <em>driver</em> to use a DAO instead of throwing all your query logic into a service, it was not meant the other way round. Although I&#8217;m really fond of what already exists in the .NET space regarding LINQ and hope to see something similar in Java, I&#8217;m wonder if that wil revolutionize the way we access data to the extend you describe. I see a clear benefit in integrating the querying into the host language I still see benefits in separating the declartion of what to query from the actual usage of the data. So IMHO hiding the declarative stuff behind a simple interface method is not much more than naming a query and then using it in a type safe manner by its name, which addresses the SOC mentioned in the original post.</p>
<p>Anyway, thanks for your thought!<br />
Ollie</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Alex</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-756</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 17 Feb 2010 14:48:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-756</guid>
		<description>If JPA didn&#039;t kill the DAO, Linq is going to kill it. It&#039;s just happen that query constructions is now part of the object oriented languages, despite the old school software eng. people efforts to ignore it and put everything in standard operations and message interchange. As OO languages are departing from the pure OO world, it may be time to rethink the OO design, don&#039;t you think ? 
Tik, Tak, Tik, Tak, DAO&#039;s death is a question of time: and in my opinion, I just hate to write &quot;one more class&quot; to do what could be automatic (and was automatic in the forgotten PL/SQL time languages). It&#039;s google time: I want to query the machine ;)</description>
		<content:encoded><![CDATA[<p>If JPA didn&#8217;t kill the DAO, Linq is going to kill it. It&#8217;s just happen that query constructions is now part of the object oriented languages, despite the old school software eng. people efforts to ignore it and put everything in standard operations and message interchange. As OO languages are departing from the pure OO world, it may be time to rethink the OO design, don&#8217;t you think ?<br />
Tik, Tak, Tik, Tak, DAO&#8217;s death is a question of time: and in my opinion, I just hate to write &#8220;one more class&#8221; to do what could be automatic (and was automatic in the forgotten PL/SQL time languages). It&#8217;s google time: I want to query the machine ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Oliver Gierke</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-614</link>
		<dc:creator>Oliver Gierke</dc:creator>
		<pubDate>Sun, 13 Sep 2009 09:27:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-614</guid>
		<description>Hey Rogério,

I tend to disagree as the sentence you quote does not even mention the term &quot;domain object&quot;. Thus IMHO &quot;specific&quot; means pretty much &quot;database specific operations&quot;. The reason I come to this conclusion is the question why anyone would bind functionality specific (meaning tightly bound) to the domain object to a separate concept interface? The DAO&#039;s responsibility is to encode *persistence specific* aspects to not bother the domain objects with functionality not related to its core responsibilities.

As the article moves on wih a second sentence you also quote here it should become clear, that having a 1:1 relationship between a DAO and a domain object is not strictly necessary. As I understand the paragraph this just describes that the interface of a DAO is equiped with domain types and its purpose: hiding database (or perstistence technology related) specifics from clients unsing it.

Regards,
Ollie</description>
		<content:encoded><![CDATA[<p>Hey Rogério,</p>
<p>I tend to disagree as the sentence you quote does not even mention the term &#8220;domain object&#8221;. Thus IMHO &#8220;specific&#8221; means pretty much &#8220;database specific operations&#8221;. The reason I come to this conclusion is the question why anyone would bind functionality specific (meaning tightly bound) to the domain object to a separate concept interface? The DAO&#8217;s responsibility is to encode *persistence specific* aspects to not bother the domain objects with functionality not related to its core responsibilities.</p>
<p>As the article moves on wih a second sentence you also quote here it should become clear, that having a 1:1 relationship between a DAO and a domain object is not strictly necessary. As I understand the paragraph this just describes that the interface of a DAO is equiped with domain types and its purpose: hiding database (or perstistence technology related) specifics from clients unsing it.</p>
<p>Regards,<br />
Ollie</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Rogério Liesenfeld</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-612</link>
		<dc:creator>Rogério Liesenfeld</dc:creator>
		<pubDate>Sat, 12 Sep 2009 14:48:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-612</guid>
		<description>Oliver, you have misunderstood the wikipedia article on DAO.
Specifically, the part where it says &quot;..., providing some specific operations ...&quot;.
The word &quot;specific&quot; in this context means operations specific to individual domain entities, not general-purpose operations like &quot;persist(o)&quot; or &quot;remove(o)&quot; that can be called for any domain object &quot;o&quot;.

This is stated more clearly in the parts that say &quot;... domain-specific objects and data types (the public interface of the DAO), ...&quot; and &quot;... specific DBMS, database schema, etc. (the implementation of the DAO)&quot;.</description>
		<content:encoded><![CDATA[<p>Oliver, you have misunderstood the wikipedia article on DAO.<br />
Specifically, the part where it says &#8220;&#8230;, providing some specific operations &#8230;&#8221;.<br />
The word &#8220;specific&#8221; in this context means operations specific to individual domain entities, not general-purpose operations like &#8220;persist(o)&#8221; or &#8220;remove(o)&#8221; that can be called for any domain object &#8220;o&#8221;.</p>
<p>This is stated more clearly in the parts that say &#8220;&#8230; domain-specific objects and data types (the public interface of the DAO), &#8230;&#8221; and &#8220;&#8230; specific DBMS, database schema, etc. (the implementation of the DAO)&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: magomarcelo</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-483</link>
		<dc:creator>magomarcelo</dc:creator>
		<pubDate>Thu, 05 Feb 2009 11:29:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-483</guid>
		<description>I find Hades really interesting, but what about existing domain classes where I cannot implement a given interface like Persistable? Is ther a solution to have them not depending on Hades maybe using AOP?</description>
		<content:encoded><![CDATA[<p>I find Hades really interesting, but what about existing domain classes where I cannot implement a given interface like Persistable? Is ther a solution to have them not depending on Hades maybe using AOP?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Oliver Gierke</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-469</link>
		<dc:creator>Oliver Gierke</dc:creator>
		<pubDate>Wed, 21 Jan 2009 09:19:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-469</guid>
		<description>@Lava - you have to be registered to create new forum posts. There should be link on the upper right corner where you can do this. Once you&#039;ve registered, you should see a link saying &quot;Create new post&quot; or something like that. Hope that helps out. Feel free to contact me directly, if you have questions.

@snoobab - I second that entirely. The problem actually results from the habit to place business logic that is actually tied to the domain objects into services, which in case can be worked around by simply accessing the DAO or repository. As Hades can not enforce the domain driven design of entities we chose DAO as term. Repository would imply a domain driven view too much. Don&#039;t get me wrong - I really like to leverage DDD. But we do not want to imply guidance that we do not give actually ;).

Ollie</description>
		<content:encoded><![CDATA[<p>@Lava &#8211; you have to be registered to create new forum posts. There should be link on the upper right corner where you can do this. Once you&#8217;ve registered, you should see a link saying &#8220;Create new post&#8221; or something like that. Hope that helps out. Feel free to contact me directly, if you have questions.</p>
<p>@snoobab &#8211; I second that entirely. The problem actually results from the habit to place business logic that is actually tied to the domain objects into services, which in case can be worked around by simply accessing the DAO or repository. As Hades can not enforce the domain driven design of entities we chose DAO as term. Repository would imply a domain driven view too much. Don&#8217;t get me wrong &#8211; I really like to leverage DDD. But we do not want to imply guidance that we do not give actually ;).</p>
<p>Ollie</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: snoobab</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-468</link>
		<dc:creator>snoobab</dc:creator>
		<pubDate>Wed, 21 Jan 2009 08:48:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-468</guid>
		<description>@Oliver: Yes agree that you can view DAO as Repository. The problem is that generally people don&#039;t follow the other &#039;good&#039; principles referred to in DDD in that typically business rules are implicitly coded into the DAO&#039;s and there isn&#039;t an over-arching thought process such as Aggregate  pattern.

What therefore tends to happen is that new developers to a particular project will search for any DAO, instantiate the factory and start obtaining data, which may completely bypass any constraints or business rules.

Cheers
snoobab</description>
		<content:encoded><![CDATA[<p>@Oliver: Yes agree that you can view DAO as Repository. The problem is that generally people don&#8217;t follow the other &#8216;good&#8217; principles referred to in DDD in that typically business rules are implicitly coded into the DAO&#8217;s and there isn&#8217;t an over-arching thought process such as Aggregate  pattern.</p>
<p>What therefore tends to happen is that new developers to a particular project will search for any DAO, instantiate the factory and start obtaining data, which may completely bypass any constraints or business rules.</p>
<p>Cheers<br />
snoobab</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Lava Kafle</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-467</link>
		<dc:creator>Lava Kafle</dc:creator>
		<pubDate>Wed, 21 Jan 2009 03:58:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-467</guid>
		<description>I did not see any forums on Hades site that you linked.</description>
		<content:encoded><![CDATA[<p>I did not see any forums on Hades site that you linked.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Clinton Lee</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-466</link>
		<dc:creator>Clinton Lee</dc:creator>
		<pubDate>Tue, 20 Jan 2009 22:51:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-466</guid>
		<description>I agree, DAO layers need to still exist despite these ORM technologies. We had JDO in my companies application abstracted away via a DAO. When our JDO vendor was failing our requirements, we decided to (for a number of technical and feature reasons) switch over to a JPA vendor. We probably spent just as much time, if not more, in research and estimation than actually coding over to JPA. We then came in way under time and budget... There is no way we could have done this in such time without our persistence being abstracted into a DAO.

Yesterday it was JDO, today it&#039;s JPA, who knows what tomorrow will bring? (db4o anyone?) So even though these are common interfaces, at times the common interfaces change.</description>
		<content:encoded><![CDATA[<p>I agree, DAO layers need to still exist despite these ORM technologies. We had JDO in my companies application abstracted away via a DAO. When our JDO vendor was failing our requirements, we decided to (for a number of technical and feature reasons) switch over to a JPA vendor. We probably spent just as much time, if not more, in research and estimation than actually coding over to JPA. We then came in way under time and budget&#8230; There is no way we could have done this in such time without our persistence being abstracted into a DAO.</p>
<p>Yesterday it was JDO, today it&#8217;s JPA, who knows what tomorrow will bring? (db4o anyone?) So even though these are common interfaces, at times the common interfaces change.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Oliver Gierke</title>
		<link>http://www.olivergierke.de/wordpress/2009/01/se-radio-episode-121-or-mappers/comment-page-1/#comment-464</link>
		<dc:creator>Oliver Gierke</dc:creator>
		<pubDate>Tue, 20 Jan 2009 21:10:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.olivergierke.de/wordpress/?p=223#comment-464</guid>
		<description>@snoobab - Thanks for your comment. DAO is widely regarded as synonym for Eric Evans&#039; Repository. So I do think, too. By creating a technology neutral interface for a DAO you actually take the step from a database abstraction towards a repository for entities.

Regards,
Ollie</description>
		<content:encoded><![CDATA[<p>@snoobab &#8211; Thanks for your comment. DAO is widely regarded as synonym for Eric Evans&#8217; Repository. So I do think, too. By creating a technology neutral interface for a DAO you actually take the step from a database abstraction towards a repository for entities.</p>
<p>Regards,<br />
Ollie</p>
]]></content:encoded>
	</item>
</channel>
</rss>
