«

»

Nov 15

Print this Post

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() eormFlush(). 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 uniqueestiver 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 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 efieldtype 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!

by Kevin Schmidt
Versão em inglês: Adobe ColdFusion Cookbook

Permanent link to this article: http://ensina.me/coldfusion/adicionando-e-atualizando-dados-usando-orm/

Leave a Reply