Diferença entre Backing Bean e ManagedBean?

Olá pessoal
Eu gostaria de saber se existe diferença
entre Backing Bean e ManagedBean?

Será que alguém poderia me dar uma ajuda? :smiley:

[]'s.

Segundo o livro Core JSF, a diferença entre um e outro é que o backing bean possui referências a um ou mais componentes da página JSF associada.

Exemplo:

[code]// Managed bean
public class UsuarioBean {
private String login, senha;

// Getters e setters

}

// Backing bean
public class UsuarioBean {
private UIInput login, senha;

// Getters e setters

}[/code]

Para mim eram todos iguais.

Não sabia dessa diferença.

[quote=ricardocomp]Olá pessoal
Eu gostaria de saber se existe diferença
entre Backing Bean e ManagedBean?

Será que alguém poderia me dar uma ajuda? :smiley:

[]'s.[/quote]

Sinceramente, para mim, não existe qualquer diferença.
Mas isso é minha opinião pessoal, por mais que diversos autores comentem o contrário.

Enfim, no final das contas, se você chamar de managed bean (minha preferência) ou backing bean o pessoal costuma entender sem problemas :slight_smile:

Eles podem até dar nomes diferentes, mas são iguais. Nunca gostei do Core JSF mesmo.
Se eu misturar o acesso a um componente com outras coisas devo mudar de nome? Nem pensar.

Hehe esse negócio de diferenciar um do outro parece que não agradou o pessoal :slight_smile:

O que o tnaires disse está correto, mas gostaria de acrescentar a minha opinião: o fato de ter referência a componentes é mais uma consequência de ele ser um backing-bean, e não a causa.
Costumo pensar da seguinte forma:

  • Managed Bean: É qualquer bean cuja vida é gerenciada pelo Faces.
  • Backing Bean: Como diz o nome, é um “Bean por detrás”, um “Bean que dá suporte”. Ou seja, é o Bean que está por trás da funcionalidade de uma página, cuidando dos seus componentes, do estado da página, da navegação, etc. Costuma ser intimamente associado a alguma página.

Todo backing-bean também é um managed bean, mas nem todo managed bean é um backing-bean. Pode ser um objeto de negócio, por exemplo.

Só completando o que foi já dito.

O conceito de backing bean vem do conceito de “code behind” , o codigo por detrás. Ou seja, é o codigo que controla a página. Mas no caso, esse codigo fica num objeto bean.

O prefixo Managed sempre identifica algo cujo ciclo de vida é controlado por algum tipo de container. Por exemplo, no JMX tb existe Managed Beans, assim como no JPA e no Spring. No JSF significa apenas que o bean tem seu ciclo de vida controlado.

Portanto, um Backing Bean é um Managed Bean, mas nem todo o Managed Bean é um Backing bean.

Porque existem poucas ocasiões onde se uma um bean que é managed e não está ligadoa a uma página parece que são a mesma coisa, mas são conceitos diferentes. Diferenciar conceitos é importante, ao contrário do que muitos possam pensar.

Mais aqui

Eu concordo com o sergiotaborda porque com esta diferenciação a estrutura do projeto fica mais organizada. Acho que fica confuso tratar os componentes junto com as regras de negócios. A partir disso podemos assumir que o backing bean não é obrigatório e geralmente é utilizado quando é necessário fazer validações de componentes em conjunto ou para tratar algum tipo de comportamento específico.
Inté :wink:

Sinceramente eu lí conceitos da apostila do algaworks e do Core 3rd Edition e não conseguiu entender…
Afinal de contas, o que é um backing bean? :oops:
Algum pode me dar um exemplo do que posso fazer com ele na prática?