I listened in on Doug Hughes' preso on Reactor at yesterday's Online ColdFusion Meetup Group. If you missed, visit the meetup site and listen in to the archived version.
<aside>I missed winning the ColdFusion 7 Standard Edition in the giveway by one person (random number selection from list of attendees) -- I was "sitting" right by the winner!</aside>
I had started using Reactor for my latest project while digging into ColdFusion OOP at the same time. The preso was quite good, but the best part was signing up for the Reactor mailing list afterward. I had a problem with the app I was creating when trying to join some tables to get all records--I didn't know how to use the Reactor objects to do the join and didn't know the "best practice" for doing it either. To make a long story short, you can create a function in the table's Gateway object (that is automagically created by Reactor) that create a Reactor query, joins tables, and can even set a where clause to grab the first record from a hasMany join. Here is an example of how to do that:
<cffunction name="getAllWithJoin" output="false" returntype="query">
<cfset var Query = createQuery() />
<!--- join all the associated tables --->
<cfset Query.join("Foo", "FooBar").join("Foo", "FooBee").join("Foo", "FooBoo")/>
<!--- only get first record from the table with the hasMany relationship --->
<cfset Query.getWhere().isEqual("FooBoo", "myField", 1) />
<!--- return the query --->
<cfreturn getByQuery(Query) />
</cffunction>
Easy as pie and database-independent too! Reactor is awesome--check it out!