Olá pessoal, sempre trabalhei com Frameworks MVC action-based como Mentawai, VRaptor,etc. Entretanto há uma semana atrás comecei a trabalhar com JSF, achei alguns pontos muito interessantes como os Converters e os Validators,dentre outras coisas mas algumas coisas me incomodaram (talvez seja o modo como estou trabalhando, por isso o post).
No JSF temos os Managed-beans ou Backing-beans, que pelo que li são algo como FormBean do Struts + Bean comum , ou seja nele tenho componente HTML, e as propriedades do meu modelo de negocio algo como:
UsuarioBean
private String username;
private String password;
private HtmlInputText input; //campo binding
private HtmlOuputText output; //campo binding
Aqui já começa alguns problemas, porque acho estranho misturar componentes HTML com atributos das classes de negócio,
gostaria de saber do pessoal que trabalha com JSF, se essa e a forma usual de trabalhar ou se por exemplo, seria melhor
ter uma classe UsuarioBean, e uma classe Usuario onde UsuarioBean teria por composicao um Usuario assim:
UsuarioBean
private Usuario usuario;
private HtmlInputText input; //campo binding
private HtmlOuputText output; //campo binding
Neste caso teria sempre duas classes para cada entidade persistivel?
E uma outra coisa que achei diferente, foi o fato de por exemplo, ter metodos de crud nos beans, como no exemplo:
UsuarioBean
private String username;
private String password;
private HtmlInputText input; //campo binding
private HtmlOuputText output; //campo binding
private UsuarioDao usuarioDao // injetado via IoC
public void save(){
usuarioDao.save(this);
}
public void update(){
usuarioDao.update(this)
}
Aqui não sei também se essa é a forma usual de se fazer, como falei venho de frameworks action-based onde um crud faria desta forma:
REQHTTP-> Action -> Dao -> SGBD
Sendo que a construção da minha classe de negocio já vem populada com os dados da view pelo meu framework MVC, e na minha
action tenho um metodo save onde invoco o Dao e passo como parametro a minha classe de modelo.
Agora desta forma, não tenho action , então poderia considerar um ManagedBean como sendo minha action, numa anologia com um framework action-based, então um save ficaria assim:
REQHttp-> ManagedBean -> Dao -> SGBD
Essa é a forma como vcs trabalham com JSF atualmente , ou existe outro modo de trabalhar?
Obrigado