[ Conceitual ] Quem és tu Managed Bean no MVC?

Quanto mais leio sobre isso mais confuso fico. Não tem um exemplo prático usando MB?

Nao falo do estado do objeto. Falo do estado da aplicacao. Mas o que seria esse estado? Sao simplesmente as informacoes que a aplicacao deve lidar, que nesse caso sao os dados que o usuario informa e que sao enviados na requisicao.

Geralmente, quando criamos um managed bean para uma pagina, declaramos tambem as propriedades referentes aos campos da pagina. Durante o ciclo de vida da pagina JSF, as informacoes inseridas nesses campos sao copiadas para suas respectivas propriedades (isso, claro, apos passarem pela arvore de componentes e pela validacao, dentre outras coisas). Ou seja, o managed bean esta armazenando as informacoes que a aplicacao lida. Logo, ele e o model.

A partir do managed bean voce pode chamar os servicos da camada de negocios (no managed bean, ainda estamos na camada de apresentacao).[/quote]
Então o managedbean é a camada de modelo e apresentação ao mesmo tempo?

[quote=tnaires]
A partir do managed bean voce pode chamar os servicos da camada de negocios (no managed bean, ainda estamos na camada de apresentacao).[/quote]
Entendi que vc falou sobre o mb ser o model, mas numa representação de diagramas, podemos considerar o mb como controller? qual vai ser o stereotype de uma classe menaged bean?

abraco

Se voce analisar o JSF como ferramenta MVC, o managed bean faz o papel de model. Esqueca todo o resto da aplicacao e pense so no JSF, conforme falei acima.

Por outro lado, suponha que voce construiu sua aplicacao usando JSF. O framework e usado na camada de apresentacao. Entao nao e certo dizer que o managed bean e apresentacao: os managed beans que voce criou compoem a camada de apresentacao, juntamente com todos os artefatos de codigo que colaboram para a construcao da apresentacao.

Nao entendo tanto de UML, mas por que voce iria querer colocar os managed beans num diagrama de classes em primeiro lugar? Qual o valor acrescido a documentacao ao fazer isso?

estou fazendo um trabalho da pós, e esse é um documento de arquitetura de software, e eu preciso colocar os "Pacotes de Design Significativos do Ponto de Vista da Arquitetura"
então preciso mostrar as classes mais importantes que vão estar na minha view, controller e model…
e agora parece que quanto mais pesquiso mais com dúvida eu fico…rsrs primeiramente eu estava pesnando em colocar os mb fazendo parte da view…
mas não sei se eh o mais correto, pois os mb não fazem fronteira com o usuário, ai vi alguns caras falando que o mb seria o controller…
como são os mais importantes, provavelmente eu tenha uma fachada entre o mb e o dao, ai ficaria os xhtml, mb, fachada, model e a persistência… tenho que organizar isso…entende?

Na parte do diagrama nao posso te ajudar (a unica vez que trabalhei com isso foi na universidade mesmo).

Mas se voce quiser ilustrar no seu diagrama que os managed beans compoem a camada de apresentacao, creio que esteja de boa. Note que camada de apresentacao <> view.

Se voce ja tiver alguma parte do diagrama feito, mostra ai :slight_smile:

então… tb estava pensando em colocar o mb como view, mas ai o meu controller seria a minha fachada?
esta em anexo como vai ficar a estrutura do meu projeto… como vc classificaria?
Obs: o BaseController é apenas um nome de classe indefinido ainda…rsrs vou descobrir depois que definir oque vai ser os meus mb…


Voce ta criando um pacote so para a aplicacao toda?

Talvez fosse melhor separar os pacotes conforme abaixo (apenas uma sugestao):

  • Modelo: aqui voce coloca apenas as classes que compoem o modelo de dominio da aplicacao;
  • Infraestrutura: neste vao apenas as classes que cuidam de coisas de infraestrutura, como as classes de persistencia;
  • Apresentacao: aqui voce poe as classes que compoem a camada de apresentacao - os managed beans vao aqui.

Depois voce pode fazer um diagrama de pacotes para ilustrar como cada um desses pacotes se relaciona entre si.

então… só para finalizar…eu ja estava esquecendo de postar o resultado final…
eu não deixei em apenas um pacote… esta separado em pages, mBean,entities e dao
da uma olhada nos anexos para ver como ficou…
na verdade esses são os pacotes mais significativos, pode ser que depois eu crie mais alguma coisa… mas a princípio fica assim.




Amigos para acabar com a discussão segue conceito disponível no material oficial da oracle sobre JSF.

Rsrsrsr, agora matou a pau!

De qualquer maneira, sempre vale a pena referenciar este post antológico no blog do sergiotaborda: