<?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>Comments on: Persisting Data</title>
	<atom:link href="http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/feed" rel="self" type="application/rss+xml" />
	<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html</link>
	<description>Me, my family, whatever I like, whatever I want to write about!</description>
	<lastBuildDate>Tue, 07 Sep 2010 19:52:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Gunnar Wagenknecht</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12993</link>
		<dc:creator>Gunnar Wagenknecht</dc:creator>
		<pubDate>Thu, 11 Oct 2007 07:40:47 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12993</guid>
		<description>Right. That&#039;s why I like EMF (for example). If you have such a complex model you typically have many associations and it&#039;s great to generate those. IMHO it&#039;s getting challenging if you need to modify generated code. But maybe that&#039;s just my subjective experience and is a problem that a generator should address.</description>
		<content:encoded><![CDATA[<p>Right. That&#8217;s why I like EMF (for example). If you have such a complex model you typically have many associations and it&#8217;s great to generate those. IMHO it&#8217;s getting challenging if you need to modify generated code. But maybe that&#8217;s just my subjective experience and is a problem that a generator should address.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jörg</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12992</link>
		<dc:creator>Jörg</dc:creator>
		<pubDate>Wed, 10 Oct 2007 19:30:04 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12992</guid>
		<description>As general as that statement is, it *must* be wrong ;-)

We have that 300+ classes highly complex object model that would in fact do take us months to write by hand, I think, though. Having bidirectional associations managed by the generated code is more than nice to have, for example.</description>
		<content:encoded><![CDATA[<p>As general as that statement is, it *must* be wrong <img src='http://wagenknecht.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>We have that 300+ classes highly complex object model that would in fact do take us months to write by hand, I think, though. Having bidirectional associations managed by the generated code is more than nice to have, for example.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar Wagenknecht</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12991</link>
		<dc:creator>Gunnar Wagenknecht</dc:creator>
		<pubDate>Tue, 09 Oct 2007 17:02:44 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12991</guid>
		<description>The right approach and APIs really depend on you and your software. For example, I developed a fairly simply framework for persisting objects into a database using Spring&#039;s JDBC DAO support some time ago. Frankly, this framework just felt off a &quot;business&quot; feature. The feature took two weeks. Anyway, thereafter it was just a matter of minutes to bringing new objects into the database using this framework.

But that&#039;s just one sample and one use-case. There are also other dependencies like tools and languages involved, etc. It really depends on your scenario. But a simple statement like &lt;em&gt;&quot;it will take you months if you don&#039;t generate code&quot;&lt;/em&gt; is just wrong.</description>
		<content:encoded><![CDATA[<p>The right approach and APIs really depend on you and your software. For example, I developed a fairly simply framework for persisting objects into a database using Spring&#8217;s JDBC DAO support some time ago. Frankly, this framework just felt off a &#8220;business&#8221; feature. The feature took two weeks. Anyway, thereafter it was just a matter of minutes to bringing new objects into the database using this framework.</p>
<p>But that&#8217;s just one sample and one use-case. There are also other dependencies like tools and languages involved, etc. It really depends on your scenario. But a simple statement like <em>&#8220;it will take you months if you don&#8217;t generate code&#8221;</em> is just wrong.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jörg</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12990</link>
		<dc:creator>Jörg</dc:creator>
		<pubDate>Tue, 09 Oct 2007 14:59:50 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12990</guid>
		<description>So what exactly is the &quot;right approach&quot;, then? And what &quot;good APIs&quot; is it that you want to build yourself before you can persist your data? 

I for myself never want to manually write any boilerplate code by hand, as usually one can find a better use for developer productivity.</description>
		<content:encoded><![CDATA[<p>So what exactly is the &#8220;right approach&#8221;, then? And what &#8220;good APIs&#8221; is it that you want to build yourself before you can persist your data? </p>
<p>I for myself never want to manually write any boilerplate code by hand, as usually one can find a better use for developer productivity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: const</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12989</link>
		<dc:creator>const</dc:creator>
		<pubDate>Tue, 09 Oct 2007 11:01:55 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12989</guid>
		<description>Yes. Databases change as well, and data access layer should support such migration.

As for frameworks, the question whether to use them often boils down to balance of &lt;a href=&quot;http://en.wikipedia.org/wiki/Don%27t_repeat_yourself&quot; rel=&quot;nofollow&quot;&gt;DRY&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/KISS_principle&quot; rel=&quot;nofollow&quot;&gt;KISS&lt;/a&gt; principles. For small apps, custom DAO might be the way to go. But for bigger apps, frameworks like Hibernate could save a lot of development and testing efforts.</description>
		<content:encoded><![CDATA[<p>Yes. Databases change as well, and data access layer should support such migration.</p>
<p>As for frameworks, the question whether to use them often boils down to balance of <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="nofollow">DRY</a> and <a href="http://en.wikipedia.org/wiki/KISS_principle" rel="nofollow">KISS</a> principles. For small apps, custom DAO might be the way to go. But for bigger apps, frameworks like Hibernate could save a lot of development and testing efforts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar Wagenknecht</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12988</link>
		<dc:creator>Gunnar Wagenknecht</dc:creator>
		<pubDate>Tue, 09 Oct 2007 10:34:06 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12988</guid>
		<description>Constantine, I agree with you. Data usually lives longer then applications, especially when databases are involved. But data structures are allowed to evolve over time. You can refactor databases too. The refactoring could become necessary for scalability/storage reasons. A 1:1 mapping might not be possible anymore in such cases. It&#039;s great if you have the right API then to catch this evolution in a layer that does not require touching the whole application. If this is a many months job something is wrong with your APIs.</description>
		<content:encoded><![CDATA[<p>Constantine, I agree with you. Data usually lives longer then applications, especially when databases are involved. But data structures are allowed to evolve over time. You can refactor databases too. The refactoring could become necessary for scalability/storage reasons. A 1:1 mapping might not be possible anymore in such cases. It&#8217;s great if you have the right API then to catch this evolution in a layer that does not require touching the whole application. If this is a many months job something is wrong with your APIs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: const</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12987</link>
		<dc:creator>const</dc:creator>
		<pubDate>Tue, 09 Oct 2007 10:25:39 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12987</guid>
		<description>“Persisting a domain model” is a bit &lt;a href=&quot;http://constantine-plotnikov.blogspot.com/2007/02/software-system-longevity-paradigms.html&quot; rel=&quot;nofollow&quot;&gt;wrong task&lt;/a&gt; in itself. The biggest issue is that normally the data outlives the version of the application (and even application itself) and shorter-lived entity should depend on longer-lived entity rather than reverse.</description>
		<content:encoded><![CDATA[<p>“Persisting a domain model” is a bit <a href="http://constantine-plotnikov.blogspot.com/2007/02/software-system-longevity-paradigms.html" rel="nofollow">wrong task</a> in itself. The biggest issue is that normally the data outlives the version of the application (and even application itself) and shorter-lived entity should depend on longer-lived entity rather than reverse.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Donald Smith</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12986</link>
		<dc:creator>Donald Smith</dc:creator>
		<pubDate>Tue, 09 Oct 2007 09:10:50 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12986</guid>
		<description>Different projects require different tools.  I&#039;ve been involved in lots of projects where EclipseLink makes a lot of sense, and a lot of projects where hacking simple SQL in PHP makes sense.  I haven&#039;t personally used it, but I&#039;m sure there are a lot of projects where Teneo makes perfect sense.

It&#039;s awesome, as software engineers, to have so many great (free) tools in our toolbelts!

 - Don</description>
		<content:encoded><![CDATA[<p>Different projects require different tools.  I&#8217;ve been involved in lots of projects where EclipseLink makes a lot of sense, and a lot of projects where hacking simple SQL in PHP makes sense.  I haven&#8217;t personally used it, but I&#8217;m sure there are a lot of projects where Teneo makes perfect sense.</p>
<p>It&#8217;s awesome, as software engineers, to have so many great (free) tools in our toolbelts!</p>
<p> &#8211; Don</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerd Castan</title>
		<link>http://wagenknecht.org/blog/archives/2007/10/persisting-data.html/comment-page-1#comment-12985</link>
		<dc:creator>Gerd Castan</dc:creator>
		<pubDate>Tue, 09 Oct 2007 08:45:14 +0000</pubDate>
		<guid isPermaLink="false">http://wagenknecht.org/blog/archives/2007/10/persisting-data.html#comment-12985</guid>
		<description>You are soooooo right.</description>
		<content:encoded><![CDATA[<p>You are soooooo right.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
