Caros colegas, venho há alguns meses estudando sobre desenvolvimento web com JSF, Hibernate, Mysql e agora estou colocando em prática com um pequeno projeto, que servirá de base para uma aplicação que irei desenvolver.
A minha dúvida é em relação a separação das responsabilidades, isto é, o papel de cada classe e se a forma que estou fazendo esta correta.
Ela esta separada dessa forma (vou colocar apenas os trechos da classe, apenas para entendimento conceitual):
[color=green]Model[/color]
@Entity
public class Usuario {
private String nome;
// getters e setters
}
public class UsuarioDAOHibernate implements UsuarioDAO {
private Session session;
public void setSession(Session session) {
this.session = session;
}
public void salvar(Usuario usuario) {
this.session.save(usuario);
}
[color=green]Controller[/color]
// Não sei se o conceito de Service se aplica assim, esta correto?
public class UsuarioService {
private UsuarioDAO usuarioDAO;
public UsuarioService() {
this.usuarioDAO = DAOFactory.criarUsuarioDAO();
}
public void salvar(Usuario usuario) {
Integer codigo = usuario.getCodigo();
if (codigo == null || codigo == 0) {
this.usuarioDAO.salvar(usuario);
} else {
this.usuarioDAO.atualizar(usuario);
}
}
[color=red]Controller ou View?[/color]
@ManagedBean(name="usuarioBean")
@RequestScoped
public class UsuarioBean {
private Usuario usuario = new Usuario();
public String salvar() {
UsuarioService usuarioService = new UsuarioService();
usuarioService.salvar(this.usuario);
return "usuario";
}
[color=green]View[/color]
<h1>Cadastro de Usuarios</h1>
<h:form id="cadastro">
<h:outputLabel for="nome" value="Nome:" />
<h:inputText id="nome" label="Nome" value="#{usuarioBean.usuario.nome}"/>
<h:commandButton value="Salvar" action="#{usuarioBean.salvar}" />
</h:form>