CF already has an idiom for dealing with recordsets: the query result set.
There is significant overhead of building an array of CFC instances for all
the matching records. In just about every context I've ever encountered,
this is overkill. I would recommend simply returning the query result set.
Indeed, this is how Reactor, ObjectBreeze, and the other ORM frameworks and
code generators handle gateway objects.
So to modify the example, I would simply do:
<cfcomponent name="TrimaGateway">
<cffunction name="init" returntype="any">
<cfreturn this />
</cffunction>
<cffunction name="getAllTrimaMachines" returntype="query">
<cfquery name="q_allTrimaMachines">
select all of your trima machines
</cfquery>
<cfreturn q_allTrimaMachines>
</cffunction>
</cfcomponent>
On 5/17/06, Steve Brownlee <[EMAIL PROTECTED]> wrote:
>
> My best attempt at a skeleton gateway for your TrimaDAO...
>
> <cfcomponent name="TrimaGateway">
>
> <cffunction name="init" returntype="any">
> <cfset variables.trimaMachines = ArrayNew(1)>
> </cffunction>
>
> <cffunction name="getAllTrimaMachines" returntype="array">
> <cfquery name="q_allTrimaMachines">
> select all of your trima machines
> </cfquery>
>
> <cfscript>
> for ( i=1; i lte q_allTrimaMachines; i=i+1 )
> {
> trimaBean = createobject("component",
> "com.bloodsource.trimaBean");
> trimaBean.setID( q_allTrimaMachines['id'][i] );
> trimaBean.setSerialNumber(
> q_allTrimaMachines['serialNumber'][i] );
> trimaBean.setInService( q_allTrimaMachines['inService'][i] );
> trimaBean.setOutService( q_allTrimaMachines['outService'][i] );
>
> ArrayAppend(variables.trimaMachines, trimaBean);
> }
> <cfscript>
>
> <cfreturn variables.trimaMachines>
> </cffunction>
>
> </cfcomponent>
>
> Master Page
> ---------------------------
> <cfset TrimaGateway = createObject("component",
> "com.bloodsource.TrimaGateway").init()>
> <cfset allMachines = TrimaGateway.getAllTrimaMachines()>
>
> // Now loop through the array of trimaBeans and output the data you need
>
> -----Original Message-----
> From: Ian Skinner [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, May 17, 2006 3:32 PM
> To: CF-Talk
> Subject: RE: OOD/Design Patterns and ColdFusion.
>
> If your not going to use a gateway Object, I would put a method in your
> DAO to return a query for the master list. You could then create a bean
> and populate it though each record or just output the query. I tend to
> do a bit of both so I guess my apps are more OOish the straight OO. If
> your going to use a gateway CFC, the gateway holds all the methods the
> would return more than one row, as these cannot be returned to the
> caller in a bean.
>
> Ok, sounds good. Can someone explain a little more on what a Gateway
> would be; what its purpose, a basic pseudo code example of how one might
> be constructed and used? Or a good link to a resource that would help
> with this?
>
> I've heard of Gateways many times in my reading, but have yet to see a
> clear example of one.
>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Message: http://www.houseoffusion.com/lists.cfm/link=i:4:240834
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54