Problema:
Voce precisa carregar dados de um database usando o novo recurso do ColdFusion 9, ORM (Object Relational Mapping).
Solução:
O novo recurso do ColdFusion 9, ORM (Object Relational Mapping) fornece fácil acesso aos poderosas recursos do Hibernate. Alé de simplesmente carregar dados, ColdFusion fornece diversas funções para adicionar e atualizar dados, incluindo as funções entitySave(), entityyNew() e ormFlush(). Uma vez mais, isso tudo é feito sem escrever um única linha de SQL!
Explicação detalhada:
Antes de usarmos o novo recurso ORM do ColdFusion 9, primeiramente o ORM deve estar habilitado. Isso é feito no arquivo Application.cfc, configurando tres atributos: name,ormenabled e datasource.
<cfcomponent> <cfset this.name = "wineApp" /> <cfset this.ormenabled = "true" /> <cfset this.datasource = "wine" /> </cfcomponent>
O atributo datasource tambem é novo em ColdFusion 9. Configurando esse atributo, todas as tags <cfquery> na aplicação que não precisem especificar um datasource usarão esse valor especificado no atributo datasource do Application.cfc.
Uma vez que ORM estiver habilitado, uma entidade deve ser criada. Isso é feito com um componente ColdFusion (CFC). A funcionalidade do ORM deve ser habilitada no CFC ao se configurar o atributo persistent para verdadeiro (true). Pode-se tambem dar um nome único à entidade usanto o atributo entityname e pode ser mapeado à uma tabela existente usando o atributo table.
<cfcomponent persistent="true" table="wine" entityname="wine"> </cfcomponent>
Cada entidade deve definir propriedades. Isso é feito usando a tag <cfproperty>. O atributoname deve casar com o nome do campo no database.
<cfcomponent persistent="true" table="wine" entityname="wine"> <cfproperty name="wineId" /> <cfproperty name="wineVintage" /> <cfproperty name="wineType" /> <cfproperty name="wineRating" /> </cfcomponent>
Dados podem ser carregados em uma variável usando-se a função entityLoad(). Os dados sereão retornados como uma array de objetos entidade.
<cfset wine = entityLoad('wine') /> <cfdump var="#wine#" />
O código acima produzirá o seguinte:
Uma outra função ORM importante de se notar aqui, que torna a saída de dados mais fácil, é a função entityToQuery() que converte a array de objetos entity para uma query ColdFusion.
<cfset wine = entityLoad('wine') /> <cfset qWine = entityToQuery(wine) /> <cfdump var="#qWine#" />
O código acima produz o seguinte:
ColdFusion agora está retirando dados de um database sem escrever uma única linha de código SQL!