Olá pessoal, estou com dúvida de como utilizar o servlet, nesse caso, o meu professor implementou a persistência no banco, o link Editar e Excluir da aplicação, porém, eu gostaria de saber o papel das linhas onde são utilizados os métodos:
beginTransaction();
getSession().merge();
commitTransaction();
closeSession();
Eu sei que o servlet iniciará a transação com o begin, persistirá com o commit e fechará a requisição com o close… mas e o papel do Merge ?
String acao = request.getParameter("acao");
System.out.println("acao: " + acao);
if (acao == null) {
acao = "";
}
if (acao.equals("salvar")) {
System.out.println("salvaaaa");
Animal ani = new Animal();
if (request.getParameter("id") !=null){
ani.setId(Long.parseLong(request.getParameter("id")));
}
else{
ani.setId(null);
}
ani.setNome(request.getParameter("nome"));
ani.setRaca(request.getParameter("raca"));
ani.setEspecie(request.getParameter("especie"));
ani.setCor(request.getParameter("cor"));
ani.setPeso(Double.parseDouble(request.getParameter("peso")));
HibernateUtil.beginTransaction();
HibernateUtil.getSession().merge(ani);
HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
} else if (acao.equals("editar")) {
Long id = Long.parseLong(request.getParameter("id"));
Animal a = (Animal) HibernateUtil.getSession().get(Animal.class, id);
request.setAttribute("animalParaEditar", a);
//editar
} else if (acao.equals("excluir")) {
Long id = Long.parseLong(request.getParameter("id")); // Converte de String para LONG, pois toda entrada em java, é uma String
Animal animal = (Animal) HibernateUtil.getSession().get(Animal.class, id); // recuperar o objeto inteiro para recuperar e excluir abaixo
HibernateUtil.beginTransaction();
HibernateUtil.getSession().delete(animal);
HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
//excluir
}
List<Animal> lista = new ArrayList<Animal>();
Criteria cri = HibernateUtil.getSession().createCriteria(Animal.class);
//filtro para restringir a consulta
//cri.add(Restrictions.ilike("nome", "ja"));
lista = cri.list();
request.setAttribute("lista", lista);
request.getRequestDispatcher("index.jsp").forward(request, response);
}