Adicionando e atualizando dados usando ORM
Problema:
Registros no database precisam ser atualizados e novos registros precisam ser adicionados usando o novo recurso ORM (Object Relational Mapping) do ColdFusion 9.
Solução:
O novo recurso ORM (Object Relational Mapping) do ColdFusion 9 fornece um fácil acesso ao poderosos recursos do Hibernate. Alem de simplesmente ler dados, ColdFusion fornece diversas funções para adicionar e atualizar dados, incluindo as funções entitySave(), entityNew() e ormFlush(). Mais uma vez isso tudo é feito sem uma única linha de código SQL!
Explicação detalhada:
Nota: este artigo assume que voce já tenha lido o "Carregando dados com ORM" logo, pularemos as instruções de como habilitar ORM e criar entidades.
Atualizando dados:
O primeiro passo para se atualizar dados é carregar uma entidade para se trabalhar. Isso é feito usando a função entityLoad() e especificando a entity, o ID do registro a se carregar, e configurando a flag unique para "true" (verdadeiro). Configurando a flag unique para "true", causará a entidade retornada se tornar um único objeto entidade, em vez de uma array contendo um único objeto identidade. Se o o filtro de critérios casar mais de um registro e a flag unique estiver configurada, uma excessão será exibida.
<cfset wine = entityLoad( 'wine', 1, true ) />
<cfdump var = "#wine#" />
O código acima produzirá o seguinte:
Uma vez a entidade estiver carregada, é possível atualizar os dados usando os métodos auto-gerados pela própria entidade. ColdFusion cria ambos métodos getter e setter para cada propriedade definida na entidade. Para atualizar os dados, o setter da propriedade a ser atualizada é chamado e o novo valor para aquela propriedade é passado.
<cfset wine = entityLoad( 'wine', 1, true ) />
<cfdump var="#wine#" />
<cfset wine.setwineRating( 99 ) />
<cfdump var = "#wine#" />
O código acima produzirá o seguinte:
Isso é tudo que voce tem que fazer! Uma vez que a página terminar de carregar, ColdFusion irá confirmar todas as alterações da entidade no database. Entretanto, voce ainda tem a opção de chamar a função entitySave() ou ormFlush() para manipular o salvamento de dados. A função entitySave() atualiza ou cria um registro único baseado na entidade passada, e a ormFlush() salva todos os pediodos pendentes e libera a sessão ORM corrente.
Salvando dados:
Antes de ser possível adicionar novos registros ao database, devemos fazer uma pequena mudança na entidade. A identidade ou chave primária deve ser especificada na entidade para que possamos adicionar um novo registro. Isto é feito especificando os atributos generator e fieldtype na tag <cfproperty> da chave primária, neste caso, a propriedade wineId.
<cfproperty name="wineId" fieldtype="id" generator="identity" />
Uma vez esses atributos tenham sido especificados, a função entityNew() é usada para criar uma nova entidade e os setters das propriedades são usados para popular os valores.
<cfset wine = entityNew( 'wine' ) />
<cfset wine.setwineVintage( 2006 ) />
<cfset wine.setwineRating( 92 ) />
<cfset wine.setwineType( 'Pinot Noir' ) />
<cfdump var="#wine#" />
<cfset entitySave( wine ) />
<cfset wines = entityLoad('wine') />
<cfdump var="#wines#" />
O código acima produz o seguinte:
O novo registro aparece ao final do array de entidades.
Então, é isso aí! Os recursos ORM do ColdFusion 9 estão adicionando e atualizando registros no database sem uma única linha de código SQL!
Versão em inglês: Adobe ColdFusion Cookbook
0 responses to “Adicionando e atualizando dados usando ORM”