TUTORIAL JAVA + FLEX NA PRÁTICA 4/6

Esse artigo é continuação do
TUTORIAL JAVA + FLEX NA PRÁTICA 1/6
TUTORIAL JAVA + FLEX NA PRÁTICA 2/6
TUTORIAL JAVA + FLEX NA PRÁTICA 3/6

Vamos falar hoje do M(Models) do nosso MVC , MVC este que fica dentro da camada de apresentação do nosso projeto.

Algo que traz muita confusão é o conceito de MVC, muitos ainda confundem o conceito de MVC com Programação em camadas... perceba bem... neste exemplo que estou colocando o código aqui eu programo em multi-camadas(4 para ser mais exato) camada de Dados, infraestrutura, Business(JAVA) e Apresentação(FLEX), neste caso o MVC fica alocado na camada de Apresentação... acho que o grande complicador é que na faculdade se ensina MVC sem camadas, então o MVC acaba que concidindo de por exemplo Models está junto com a Dao... um dia destes falei sobre MVC aqui no blog... MVC da teoria para a prática.

Vamos ao que interessa, No nosso Model como podem perceber na arquitetura abaixo comtém duas pastas, uma o delegates e outra a entitys.

package crudFlex TUTORIAL JAVA + FLEX NA PRÁTICA 4/6

Vamos ao código e logo abaixa a explicação:

EstadoDelegate.as

ACTIONSCRIPT:
  1. import com.saberprogramar.models.entitys.Estado;
  2.  
  3.     import mx.rpc.AsyncToken;
  4.     import mx.rpc.Responder;
  5.     import mx.rpc.events.FaultEvent;
  6.     import mx.rpc.remoting.RemoteObject;
  7.  
  8.     import org.swizframework.delegate.AbstractDelegate;
  9.  
  10.     public class EstadoDelegate extends AbstractDelegate
  11.     {
  12.  
  13.         [Autowire(bean="estadoService")]
  14.         public var estadoService:RemoteObject;
  15.  
  16.         public function EstadoDelegate()
  17.         {
  18.             super();
  19.         }
  20.  
  21.  
  22.         //AS OPERAÇÕES CRUD
  23.         public function findAll():AsyncToken{
  24.             return estadoService.findAll();
  25.         }
  26.  
  27.         public function findByName(nome:String):AsyncToken{
  28.             return estadoService.findByName(nome);
  29.         }
  30.  
  31.         public function save(estado:Estado):AsyncToken{
  32.             return estadoService.save(estado);
  33.         }
  34.  
  35.         public function remove(estado:Estado):AsyncToken{
  36.             return estadoService.remove(estado);
  37.         }
  38.  
  39.  
  40.     }

Na classe acima temos muito o que entender:

  • primeiro é que ela extende uma classe AbstractDelegate, classe esta pertencente ao framework Swiz, quando for feito uma escuta (Autowire) no nosso delegate essa super classe(classe "Pai") é responsável por instanciar nossa classe (humm! Se não entendeu mais a frente vamos entender);
  • Algo a se comentar também é que esta classe faz uma escuta (Autowire) ao Nosso serviço externo mapeado no nosso BeansLoader, não Lembra:
XML:
  1. <!-- estado service -->
  2.     <mx:RemoteObject id="estadoService"
  3.                      destination="EstadoService"
  4.                      channelSet="{myAmfChannel}"/>

Então quando fazemos isso:

ACTIONSCRIPT:
  1. [Autowire(bean="estadoService")]
  2.         public var estadoService:RemoteObject;

a mágica acima explicada ocorre ;)

Perceba que declaramos um RemoteObject porém não intanciamos em momento algum, é reposnabilidade da nossa escuta (Autowire ) ir no nosso BeansLoader ,procurar um bean como o nome solicitado, no caso o “estadoService” e instanciá-lo, o que chamamos de Injeção de Dependência (IOC), essa é a tal similaridade entre o Swiz e Spring, o fácil uso de IOC usando anotações (@... no java e [...] no ActionScript).E por último perceba que toda função no nosso delegate espera como retorno um AsyncToken, isso porque um RemoteObejct sempre retorna um AsyncToken.

  • E por último toda função do nosso delegate espera como retorno um AsyncToken, isso porque um RemoteObejct sempre retorna um AsyncToken.

Além do nosso delegate temos também a nossa Entity, que funciona como um clone do nosso entity feito no java:

Estado.as

ACTIONSCRIPT:
  1. [RemoteClass(alias="com.saberprogramar.business.entitys.Estado")]
  2.     [Bindable]
  3.     public class Estado
  4.     {
  5.  
  6.         public var idEstado:Number;
  7.         public var nome:String;
  8.         public var uf:String;
  9.  
  10.     }

Para quem leu o artigo do Rodrigo Fraga como mencionado na 1 parte do Tutorial não precisa de nenhuma explicação sobre as entitys.

Só abro aqui um parênteses porque muitos ainda confundem e aqui chamariam a nossa Entity de VO ou DTO, vamos refletir a tradução de VO (ValueObjects) já diz tudo, classes para serem qualificadas como VO tem que ser classes que não possuem uma entidade, ou seja, o Estado é único, podem até existir vários Rio de Janeiro, porém o Rio de Janeiro que possui um entidade ( algumas características que provam que ele é único tipo "favela"(esse todos tem rs), Cristo Redentor, Copacapana só o Rio tem) no mundo da programação “normalmente” o que qualifica uma entidade são os ID (AutoIncrement), vamos a um exemplo de uma vez por todas para parar com esta palhaçada de chamar Entidades de VO ou DTO, você quer saber onde tem praia por perto, aí sim você pode ter uma PraiaVO, um obejto que retorne para você as praias, não interessa qual, é um objeto de valor, que “normalmente” serve apenas como consulta, sem tabelas no banco de dados, sem função para salvar, atualizar, apenas uma consulta de n Objetos que resulta na formação de um objeto com tempo de vida curto.

Bem é isso na próxima parte e provavelmente a penúltima vou falar de controllers, Events, por útimo deixarei a view.

Até a próx.

Popularity: 34% [?]

Tags: , , , , , , , , , , ,

Categoria(s):#JAVA + FLEX NA PRÁTICA, Blazeds, Data Service, Frameworks, Hibernate, Java, MVC, Spring, Swiz Framework


Outros Artigos:

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

2 Responses to “TUTORIAL JAVA + FLEX NA PRÁTICA 4/6”

  1. [...] + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6 TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 TUTORIAL JAVA + FLEX NA PRÁTICA 4/6 TUTORIAL JAVA + FLEX NA PRÁTICA [...]

  2. [...] + FLEX NA PRÁTICA 1/6 TUTORIAL JAVA + FLEX NA PRÁTICA 2/6 TUTORIAL JAVA + FLEX NA PRÁTICA 3/6 TUTORIAL JAVA + FLEX NA PRÁTICA 4/6 TUTORIAL JAVA + FLEX NA PRÁTICA 5/6 TUTORIAL JAVA + FLEX NA PRÁTICA [...]

Leave a Reply