Olá pessoal, estou iniciando no mundo java, seguindo um livro de java para web. Cheguei ao passo final onde todas as classes abaixo já foram criadas, mas fiquei com dúvidas em relação a separação MVC delas.
@Entity
public class Usuario implements Serializable {
@Id
@GeneratedValue
private Integer codigo;
private String nome;
private String email;
Até aqui legal, parte do model usuário.
public interface UsuarioDAO {
public void salvar(Usuario usuario);
public void atualizar(Usuario usuario);
public void excluir(Usuario usuario);
public Usuario carregar(Integer codigo);
public Usuario buscaPorLogin(String login);
public List<Usuario> lista();
}
A interface DAO do usuário.
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);
}
Implementação da interface, setando a sessão do hibernate.
public class UsuarioRN {
private UsuarioDAO usuarioDAO;
public UsuarioRN() {
this.usuarioDAO = DAOFactory.criarUsuarioDAO();
}
Aqui começa minhas dúvidas, essa RN(regras de negocio) seria o controller?
Porque é declarado a interface usuarioDAO e não a implementação UsuarioDAOHibernate?
public class DAOFactory {
public static UsuarioDAO criarUsuarioDAO() {
UsuarioDAOHibernate usuarioDao = new UsuarioDAOHibernate();
usuarioDao.setSession(HibernateUtil.getSessionFactory().getCurrentSession());
return usuarioDao;
}
Porque dessa classe DAOFactory? Se a sessão do hibernate já foi declarada na classe UsuarioDAOHibernate?
Fiquei muito confuso com tantas classes tratando o mesmo “assunto”.