Para quem usa a Extensão Coldfusion para eclipse da Adobe, dentro de RDS Dataview quando clicamos com o botão direito do mouse numa tabela temos a opção: Coldfusion Wizards > Create CFC. Abre então uma janela "Coldfusion CFC Value Object Wizard" com 3 opções, entre elas uma pode gerar automaticamente os arquivos CFC para acesso a dados que prefiro chamar de grupo DAO, que é constituído de 3 arquivos com suas respectivas funções: DAO, TO e Gateway.
Esta plugin para o eclipse pode ser obtido gratuítamente na Adobe ColdFusion 8 Extensions for Eclipse, também vem junto com o Flex Builder.
O arquivo gateway do grupo DAO, não concebe tratamento para tabelas de relacionamento no banco de dados, então criei esse snipet no Cfeclipse que pode ser usado no arquivo Gateway.cfc sobrescrevendo os métodos gerados, assim permitindo um melhor controle para tabelas de relacionamento. A princípio escrevi para tratar relacionamentos entre duas tabelas, mas é bem fácil adaptá-lo para mais tabelas.
<cffunction name="getById" output="false"
access="remote">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />
<cfreturn createObject("component",
"$${DAO}").read(arguments.$${idt1},arguments.$${idt2})>
</cffunction>
<cffunction name="getByIdAndSave" output="false" access="remote"
hint="Insere relacionamento - salva se for novo (insert)">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />
<cfscript>
var Obj = getById(arguments.$${idt1},arguments.$${idt2});
if(Obj.get$${idt1}() eq 0 AND Obj.get$${idt2}() eq 0){
Obj.set$${idt1}(arguments.$${idt1});
Obj.set$${idt2}(arguments.$${idt2}); save(obj); }
</cfscript>
</cffunction>
<cffunction name="save" output="false" access="remote">
<cfargument name="obj" required="true" />
<cfscript>
return createObject("component", "$${DAO}").create(arguments.obj);
</cfscript>
</cffunction>
<cffunction name="deleteById" output="false"
access="remote">
<cfargument name="$${idt1}" required="true" />
<cfargument name="$${idt2}" required="true" />
<cfset var obj =
getById(arguments.$${idt1},arguments.$${idt2})>
<cfset createObject("component", "$${DAO}").delete(obj)>
</cffunction>