<?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: Persistance CFC Generators</title>
	<atom:link href="http://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/</link>
	<description>Thoughts, rants, and even some code from the mind of Barney Boisvert.</description>
	<lastBuildDate>Thu, 11 Sep 2014 09:58:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: mihaimm</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-284</link>
		<dc:creator>mihaimm</dc:creator>
		<pubDate>Fri, 21 Jul 2006 12:56:08 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-284</guid>
		<description>This is an excellent idea. And with SVN it actually works.
</description>
		<content:encoded><![CDATA[<p>This is an excellent idea. And with SVN it actually works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barney</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-283</link>
		<dc:creator>Barney</dc:creator>
		<pubDate>Wed, 18 Jan 2006 16:56:03 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-283</guid>
		<description>Doug,

My point was more that if you start mucking with the generated code that a framework produces then you lose a lot of the benefits of the framework (because you&#039;re invading the framework&#039;s black box).  At that point, you&#039;re basically using the framework as a static generator, which is fine, but reduces the utility of having the framework to begin with.

In PIER, I happen to tweak a lot of generated SQL, simply because machines are horrible about dealing with every edge case, so I don&#039;t even bother trying to program the generator to handle them.  As such, any kind of automated solution would be more cumbersome than it&#039;s worth, but a static generator is perfect.  Combined with vendor branches, it makes for a very easy to work with setup.  That was my main point.

Basically what I&#039;ve got is a custom Reactor-like product that doesn&#039;t have the ability to do anything dynamically.  It generates only when I tell it to, never automatically.  It&#039;s also tuned to do some PIER-specific generation.  I could easily have started with Reactor and customized (and saved myself a lot of work, no doubt, judging from the digging around I&#039;ve done in Reactor), but unfortunately Reactor came a few years too late.

I think Reactor (and Arf, etc.) are great products to have available to CF developers.  They&#039;re just no a be-all end-all answer to persistance issues, and there are ways to make other techniques approach the ease of use those frameworks offer.</description>
		<content:encoded><![CDATA[<p>Doug,</p>
<p>My point was more that if you start mucking with the generated code that a framework produces then you lose a lot of the benefits of the framework (because you're invading the framework's black box).  At that point, you're basically using the framework as a static generator, which is fine, but reduces the utility of having the framework to begin with.</p>
<p>In PIER, I happen to tweak a lot of generated SQL, simply because machines are horrible about dealing with every edge case, so I don't even bother trying to program the generator to handle them.  As such, any kind of automated solution would be more cumbersome than it's worth, but a static generator is perfect.  Combined with vendor branches, it makes for a very easy to work with setup.  That was my main point.</p>
<p>Basically what I've got is a custom Reactor-like product that doesn't have the ability to do anything dynamically.  It generates only when I tell it to, never automatically.  It's also tuned to do some PIER-specific generation.  I could easily have started with Reactor and customized (and saved myself a lot of work, no doubt, judging from the digging around I've done in Reactor), but unfortunately Reactor came a few years too late.</p>
<p>I think Reactor (and Arf, etc.) are great products to have available to CF developers.  They're just no a be-all end-all answer to persistance issues, and there are ways to make other techniques approach the ease of use those frameworks offer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Doug Hughes</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-282</link>
		<dc:creator>Doug Hughes</dc:creator>
		<pubDate>Wed, 18 Jan 2006 14:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-282</guid>
		<description>Barney â€“ 

Just so I understand, the only complaint you really have with Reactor is the inaccessibility of the base generated objects?  My real answer to that is that Reactor is not intended to keep you from having to code stuff.  Itâ€™s whole purpose is to reduce the amount of tedious, repetitive coding youâ€™d otherwise be doing.  

Regarding speed, reactor shouldnâ€™t have much more overhead in production mode than a typical factory CFC.  There is a little overhead related to making the core CFCs database agnostic, but Iâ€™m working on that.  

Anyhow, Iâ€™d love any feedback you might have.  Reactorâ€™s not for everyone (nor for every project), but Iâ€™d like it to be as good as it could be.</description>
		<content:encoded><![CDATA[<p>Barney â€“ </p>
<p>Just so I understand, the only complaint you really have with Reactor is the inaccessibility of the base generated objects?  My real answer to that is that Reactor is not intended to keep you from having to code stuff.  Itâ€™s whole purpose is to reduce the amount of tedious, repetitive coding youâ€™d otherwise be doing.  </p>
<p>Regarding speed, reactor shouldnâ€™t have much more overhead in production mode than a typical factory CFC.  There is a little overhead related to making the core CFCs database agnostic, but Iâ€™m working on that.  </p>
<p>Anyhow, Iâ€™d love any feedback you might have.  Reactorâ€™s not for everyone (nor for every project), but Iâ€™d like it to be as good as it could be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Barney</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-281</link>
		<dc:creator>Barney</dc:creator>
		<pubDate>Wed, 18 Jan 2006 04:09:54 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-281</guid>
		<description>To answer both Kurt and Mike, yes, Reactor does generate code once, and then use it until regenerated. It also generates empty CFCs for you to modify that extend the CFCs that actually contain the generated code.  Upon regeneration, only the base CFCs are overwritten, leaving any custom code intact.

The main problem with this is you can only tweak stuff at the method level.  I.e. if you need to change behaviour of the generated code, you can only do it by wrapping or replacing a method.  No finer-grained control is available.  In many cases, that&#039;s sufficient, but not always.  An example would be a entity property that has a different type than the field in the DB.  No big deal to override the get/set pair, but the UPDATE and INSERT statements don&#039;t need to be totally rewritten, just that one fields needs modification.</description>
		<content:encoded><![CDATA[<p>To answer both Kurt and Mike, yes, Reactor does generate code once, and then use it until regenerated. It also generates empty CFCs for you to modify that extend the CFCs that actually contain the generated code.  Upon regeneration, only the base CFCs are overwritten, leaving any custom code intact.</p>
<p>The main problem with this is you can only tweak stuff at the method level.  I.e. if you need to change behaviour of the generated code, you can only do it by wrapping or replacing a method.  No finer-grained control is available.  In many cases, that's sufficient, but not always.  An example would be a entity property that has a different type than the field in the DB.  No big deal to override the get/set pair, but the UPDATE and INSERT statements don't need to be totally rewritten, just that one fields needs modification.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Kelp</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-280</link>
		<dc:creator>Mike Kelp</dc:creator>
		<pubDate>Wed, 18 Jan 2006 01:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-280</guid>
		<description>One thing I have considered that could pretty much work for any object based platform would be to generate objects into a set of base CFCs with an empty CFC that inherits the base and is where you would put customized code.

Obviously the idea has a long way to go, but it does allow regeneration without needing as much merging work and keeps the developer in absolute control. There are a lot more pros and cons as I keep thinking about it, but I have considered implementing it on a small scale to see how powerful it would be.</description>
		<content:encoded><![CDATA[<p>One thing I have considered that could pretty much work for any object based platform would be to generate objects into a set of base CFCs with an empty CFC that inherits the base and is where you would put customized code.</p>
<p>Obviously the idea has a long way to go, but it does allow regeneration without needing as much merging work and keeps the developer in absolute control. There are a lot more pros and cons as I keep thinking about it, but I have considered implementing it on a small scale to see how powerful it would be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kurt Wiersma</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-279</link>
		<dc:creator>Kurt Wiersma</dc:creator>
		<pubDate>Wed, 18 Jan 2006 01:33:16 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-279</guid>
		<description>From what I know doesn&#039;t Reactor generate code right when it starts up so it won&#039;t have a huge performance hit on your application after it starts up? If so that might make it more of a production solution then ARF (not that ARF is bad).</description>
		<content:encoded><![CDATA[<p>From what I know doesn't Reactor generate code right when it starts up so it won't have a huge performance hit on your application after it starts up? If so that might make it more of a production solution then ARF (not that ARF is bad).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chip Temm</title>
		<link>https://www.barneyb.com/barneyblog/2006/01/17/persistance-cfc-generators/comment-page-1/#comment-278</link>
		<dc:creator>Chip Temm</dc:creator>
		<pubDate>Tue, 17 Jan 2006 23:58:44 +0000</pubDate>
		<guid isPermaLink="false">http://barneyb.com/barneyblog/?p=139#comment-278</guid>
		<description>I like the generated route myself and think that you raise an important concept in using SCM tools to manage merging manual changes to generated files into files generated after changes to the base templates.  I have been working on a system to slurp UML diagrams and generate a persistence layer.  You can find it at http://cfopen.org/projects/openmodel/ Unfortunately I haven&#039;t found much time to work on it of late as I have recently started a new job.  What I need to do is to think about re-doing the templates in order to generate something with more momentum- maybe ARF as Joe is getting a lot of press these days.</description>
		<content:encoded><![CDATA[<p>I like the generated route myself and think that you raise an important concept in using SCM tools to manage merging manual changes to generated files into files generated after changes to the base templates.  I have been working on a system to slurp UML diagrams and generate a persistence layer.  You can find it at <a href="http://cfopen.org/projects/openmodel/" rel="nofollow">http://cfopen.org/projects/openmodel/</a> Unfortunately I haven't found much time to work on it of late as I have recently started a new job.  What I need to do is to think about re-doing the templates in order to generate something with more momentum- maybe ARF as Joe is getting a lot of press these days.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
