Olá,
Vou tentar te explicar isso tudo!
É o seguinte, considerando que você já construiu sua interface gráfica vamos entender os outros componentes.
Controller : Essa é a classe responsável por receber uma ação, ação essa que foi desencadeada na GUI pelo usuário que esta usando o sistema.
O controller também é responsável por recuperar as informações passadas pela interface, formata-las e enviar para uma outra camada
que seria a camada de negócio.
Após o processamento na camada de negócio ele responde ao usuário.
Service: Essa seria sua camada de negócio onde você irá validar suas informações e processa-la propriamente dito, isso inclui enviar para uma outra
camada que é responsável por armazenar no banco de dados.
DAO: Classe responsável por manipular os dados do seu sistema, considerando que é um banco de dados, ela seria responsável porque salvar seus objetos
e fazer consultas dos mesmos.
Vou fazer um código de exemplo, segue:
public class MyController {
UserService userService;
public MyController(UserService userService) {
this.userService = userService;
}
@Path("/url/usuario/vai/chamar")
public Retorno createUser(User user) {
Boolean status = userService.verifyAndSaveUser(user);
return status ? new Retorn("OK") : new Retorna("Error");
}
}
Agora a sua classe de negócio, que no nosso exemplo é UserService
public class UserService {
UserDAO userDAO;
public UserService(UserDAO userDAO) {
this.userDAO = userDAO;
}
public Boolean verifyAndSaveUser(User user) {
//Valida o usuario
if (user.hasErrors()) return false;
userDAO.saveOrUpdate(user);
return true;
}
}
Sua classe de DAO seria uma alguma coisa parecido com isso:
public class UserDAO {
SessionFactory sessionFactory;
public UserDAO(SessionFactory sessionFactory){
this.sessionFactory= sessionFactory;
}
public void saveOrUpdate(User user) {
sessionFactory.getSession().saveOrUpdate(user);
}
}
Mande mais dúvidas!!
abraço!