Quantos managed beans - JSF 2.0

Boa noite gente. Bem to desenvolvendo um pequeno projeto com jsf 2.0 e mais alguns frameworks. Estou tentando imaginar um cenario para meus ManagedBeans,
nao sei se crio um MB por entidade para o publico, outro para usuarios e outro para o administrador. Se alguem ja teve alguma boa experiencia com isso e puder
me ajudar eu ficaria muito agradecido. Te mais…

Quando eu faço crio um managed bean por tela, que vai dar quase um por entidade.
Ex: cadastro de clientes.
Faço em metodo salvar e excluir , excluir, listar. se precisar de outras trabelas listarTiposdeClientes … assim vai.

normalmente cria-se um ManagedBean por tela.
tem que tomar cuidado com esse negócio de “reaproveitar” ManagedBeans em várias telas diferentes, pode começar ficar acoplado demais e ainda ter problemas com escopo.

mas existem alguns casos que “reaproveito” um ManagedBean, por exemplo uma listagem de cidades, essa lista será igual em qualquer tela, então crio um CidadeBean com um método getLista() e deixo ele com @ApplicationScoped. Nesse caso não precisaria criar esse método em todos os MB.

Certo um MB por tela. No meu caso tenho uma tela para cadastro e outra para edicao de Peca que so o administrador do sistema tera acesso e tenho a tela principal que qualquer um podera acessar. Eu to usando o mesmo MB pras 3 telas, usando a mesma lista com o dados salvos e usando duas entidades pecas diferentes, uma para cadastro/edicao e outra por exemplo pro usuario ver os detalhes daquela peca. So que to achando ele muito cheio. Nao seria o caso de eu criar um MB separado
pro administrador?? E outra coisa, to inicializando os dados que ficarao disponiveis na tela principal no construtor do MB, e como ele e um SessionScoped os dados nao sao buscados em acesso posterior nao trazendo assim possiveis dados salvos depois que ele iniciou a sessao, nao to sabendo como resolver isso. To lendo bastante procurando dicas sobre isso mas ainda nao encontrei, quem puder da uma forca…

Bom, especificamente não crio meus Managed Beans somente por tela, tento criar eles mais por entidade que por tela, o próprio nome já diz, o Managed Bean e um bean gerenciado, um gerenciador de beans, nada mais que um controlador que atua como fachada pra o modelo. Então tento criar por entidade e na visão (nas páginas) vou chamando os os vários managed beans e não apenas um para aquela tela que foi criada. Porque imagina aí mudar alguma coisa na view (tipo você ter que usar uma funcionalidade de outra tela), você terá que mudar todo o managedbean da tela e deste outro modo (por entidade) você apenas mudára a view, mudando as chamadas aos managed beans necessários. Beleza? Falou! :smiley:

Ah! E nem preciso dizer que aumenta o desacoplamento de código e a reusabilidade, :wink:

Vinicius e exatamente como to fazendo cara. So to achando ele bem cheinho e com isso meio dificil de manter. E no caso de criar um MB separado pra operacoes de persistencia?? Um MB separado pro admin do sistema? O que acha disso? e outra coisa cara que eu falei ali em cima, qual a melhor forma pra mim estar inicializando os dados pro usuario e quando atualiza-los?? Como pode ver e meu primeiro projeto com JSF. Vou agradecendo pela ajuda de vcs…

Bom, eu acho que se você tiver seguindo os padrões direitinho não fica grande e difícil de manter não, vai por mim, melhor assim que por tela, se tá ficando muito grande alguma coisa tá acontecendo.
Sobre o MB separado, você tem que ver o quão útil vai ser isso, eu não faria porque aí sim você estaria duplicando código, o admin do sistema também é um usuário certo? então ele deve ser manipulado de uma forma diferente no bean usuário, não sei o que você tá pretendendo fazer, não sei, tem que ver como tá sua implementação aí pra definir essas coisas.
Sobre a inicialização dos dados(não sei como você está implementando seu mvc), não entendi muito bem a pergunta mas a maneira mais correta é inicializar no ManagedBean mesmo mas sem aplicar lógica de negócio pois o MB faz parte do control e apenas recebe os dados da view e repassa para manipulação interna. :smiley:

No caso de inicializacao dos dados do banco, quando eu os benas sao inicializados eu recupero os dados do banco pra apresenta-los na pagina principal, sao os produtos disponiveis. Eu nao to sabendo quando esses produtos devem ser recuperados novamente do banco, pro caso alguma insercao na base por exemplo. Porque eu nao posso acessar a base sempre que o usuario der um refresh ou apertar no botao home. Acho que nao to me expressando muito bem ne. hahahaha. Mas valeu ai pela atencao de todos ate o momento gente…

Entendi nada! KKKKKKKKKK

Pois e. kkkkkkkkkk. mas por aqui ta bom, ja me esclareceram muita coisa.