<?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: The Myth of &#8220;One Place to Change&#8221;</title>
	<atom:link href="http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/feed/" rel="self" type="application/rss+xml" />
	<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/</link>
	<description>Technology and Geek Stuff by Eric Burke</description>
	<lastBuildDate>Tue, 24 Aug 2010 19:55:26 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ocean</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-2071</link>
		<dc:creator>ocean</dc:creator>
		<pubDate>Tue, 27 Nov 2007 19:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-2071</guid>
		<description>When I say one place to change I am really talking about one place to change things related to the database specifically validation logic and JPAQL queries. Of course extensive changes to the schema will change the entire app. Maybe it&#039;s just me, but I&#039;ve dealt with applications where &quot;schema logic&quot; (mostly in the form of EJBQL) was scattered throughout the codebase (to be more &quot;object oriented&quot;) and it was not fun at all. So yeah, these days I stick all of that in one place, a Repository class.

&quot;Had to change two Struts Actions classes (the add and the edit), the XSLT to handle the new selected column value from the new drop down list it will populate. Had to change the business class to add the attribute with its accessors and mutators, etc….&quot;

This doesn&#039;t round right to me. Action classes ought to carry the business object itself just so if the business object changes the Action shouldn&#039;t need to. If the interfaces between your layers are coarse and generic enough it should be possible for all types of changes to pass through without disturbing other layers -- until you reach the GUI at least.</description>
		<content:encoded><![CDATA[<p>When I say one place to change I am really talking about one place to change things related to the database specifically validation logic and JPAQL queries. Of course extensive changes to the schema will change the entire app. Maybe it&#8217;s just me, but I&#8217;ve dealt with applications where &#8220;schema logic&#8221; (mostly in the form of EJBQL) was scattered throughout the codebase (to be more &#8220;object oriented&#8221;) and it was not fun at all. So yeah, these days I stick all of that in one place, a Repository class.</p>
<p>&#8220;Had to change two Struts Actions classes (the add and the edit), the XSLT to handle the new selected column value from the new drop down list it will populate. Had to change the business class to add the attribute with its accessors and mutators, etc….&#8221;</p>
<p>This doesn&#8217;t round right to me. Action classes ought to carry the business object itself just so if the business object changes the Action shouldn&#8217;t need to. If the interfaces between your layers are coarse and generic enough it should be possible for all types of changes to pass through without disturbing other layers &#8212; until you reach the GUI at least.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JR</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-1873</link>
		<dc:creator>JR</dc:creator>
		<pubDate>Fri, 23 Nov 2007 19:42:04 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-1873</guid>
		<description>I have to agree.  Once you make a change to the database schema, more likely then not, you&#039;re going to have domino effect propagate all the way to the UI.  Depending on your architecture, this can be affect a large amount of objects.  Of course, to the requester of the change, it&#039;s just one field :)</description>
		<content:encoded><![CDATA[<p>I have to agree.  Once you make a change to the database schema, more likely then not, you&#8217;re going to have domino effect propagate all the way to the UI.  Depending on your architecture, this can be affect a large amount of objects.  Of course, to the requester of the change, it&#8217;s just one field <img src='http://stuffthathappens.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Smitty</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-1845</link>
		<dc:creator>Smitty</dc:creator>
		<pubDate>Fri, 23 Nov 2007 07:08:39 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-1845</guid>
		<description>Yeah, I don&#039;t buy it, either.  Had to add support for a new column on an existing table today (yeah Thanksgiving deadlines, baby).  Had to change two Struts Actions classes (the add and the edit), the XSLT to handle the new selected column value from the new drop down list it will populate.  Had to change the business class to add the attribute with its accessors and mutators, etc....

Not even the best design is going to keep you from having to change multiple classes with a practical application, IMHO.

Maybe I&#039;m numb to it, but changing all these classes wasn&#039;t the end of the world, and I wrote tests to improve my confidence that the changes I made to accommodate the new column didn&#039;t break existing code.  It can always be worse ;-).</description>
		<content:encoded><![CDATA[<p>Yeah, I don&#8217;t buy it, either.  Had to add support for a new column on an existing table today (yeah Thanksgiving deadlines, baby).  Had to change two Struts Actions classes (the add and the edit), the XSLT to handle the new selected column value from the new drop down list it will populate.  Had to change the business class to add the attribute with its accessors and mutators, etc&#8230;.</p>
<p>Not even the best design is going to keep you from having to change multiple classes with a practical application, IMHO.</p>
<p>Maybe I&#8217;m numb to it, but changing all these classes wasn&#8217;t the end of the world, and I wrote tests to improve my confidence that the changes I made to accommodate the new column didn&#8217;t break existing code.  It can always be worse <img src='http://stuffthathappens.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: denise</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-1835</link>
		<dc:creator>denise</dc:creator>
		<pubDate>Thu, 22 Nov 2007 23:36:37 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-1835</guid>
		<description>I have to say that I agree with you on this.. I&#039;m struggling to think of a situation where *only* one place had to change when the schema changed. It always ends up making its way to the UI, new screens/fields/columns etc.

Maybe what they mean is that only one place *must* change, but the other places have the option of changing. How useful/applicable this is depends on your application. Maybe if there&#039;s a bunch of back-end calculations going on..</description>
		<content:encoded><![CDATA[<p>I have to say that I agree with you on this.. I&#8217;m struggling to think of a situation where *only* one place had to change when the schema changed. It always ends up making its way to the UI, new screens/fields/columns etc.</p>
<p>Maybe what they mean is that only one place *must* change, but the other places have the option of changing. How useful/applicable this is depends on your application. Maybe if there&#8217;s a bunch of back-end calculations going on..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Burke</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-1793</link>
		<dc:creator>Eric Burke</dc:creator>
		<pubDate>Thu, 22 Nov 2007 03:47:20 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-1793</guid>
		<description>Maybe you see it during prototyping because none of the other layers exist yet? :-) ouch...

I&#039;m really just taking issue with this extraordinary claim: &quot;there’s only one place in the code that has to change when your database schema changes&quot;. I hope some other people weigh in on this, because it sounds very unrealistic unless you only deal with greenfield apps.

Where I work, with hundreds of customers and decades of legacy to deal with, adding new information to the database means adding new fields to the UI, new online help, new validators, new business rules, updating custom Crystal Reports, updating COBOL batch jobs, etc. It can be catastrophic.

Who are you anyway? Billy Ocean? Ted Neward? You should get a gravatar.</description>
		<content:encoded><![CDATA[<p>Maybe you see it during prototyping because none of the other layers exist yet? <img src='http://stuffthathappens.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ouch&#8230;</p>
<p>I&#8217;m really just taking issue with this extraordinary claim: &#8220;there’s only one place in the code that has to change when your database schema changes&#8221;. I hope some other people weigh in on this, because it sounds very unrealistic unless you only deal with greenfield apps.</p>
<p>Where I work, with hundreds of customers and decades of legacy to deal with, adding new information to the database means adding new fields to the UI, new online help, new validators, new business rules, updating custom Crystal Reports, updating COBOL batch jobs, etc. It can be catastrophic.</p>
<p>Who are you anyway? Billy Ocean? Ted Neward? You should get a gravatar.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ocean</title>
		<link>http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/comment-page-1/#comment-1790</link>
		<dc:creator>ocean</dc:creator>
		<pubDate>Thu, 22 Nov 2007 02:36:48 +0000</pubDate>
		<guid isPermaLink="false">http://stuffthathappens.com/blog/2007/11/21/the-myth-of-one-place-to-change/#comment-1790</guid>
		<description>I see it all the time during the prototype/initial development stages for new services. It&#039;s also pretty important to have a single place to look for all JPA/HQL queries related to a specific subsystem. When you have such queries scatted through your domain classes in the case of &quot;transparent persistence&quot; it ends up being a very tedious to find what you&#039;re looking for.</description>
		<content:encoded><![CDATA[<p>I see it all the time during the prototype/initial development stages for new services. It&#8217;s also pretty important to have a single place to look for all JPA/HQL queries related to a specific subsystem. When you have such queries scatted through your domain classes in the case of &#8220;transparent persistence&#8221; it ends up being a very tedious to find what you&#8217;re looking for.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.247 seconds -->
