Pessoal, estou começando a usar o hibernate agora e estou tendo problemas, já fiz tudo que sei e li, tudo como manda o figurino: criei a minha entidade, coloquei as anotações, criei meu dao, o jsp e meu servlet, já fiz meu arquivo de configuração do hibernate - hibernate.cfg.xml. Mas na hora de salvar, nada acontece, só mostra na tela os dados recuperados por POST e no banco nao acontece nada, não sei o que estou fazendo de errado, ou deixando de fazer, se alguem puder me ajudar.
Pessoa.javapackage br.com.teste.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="pessoa")
public class Pessoa implements Serializable {
private static final long serialVersionUID = 2174678509151116408L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name="pessoa_id")
private int id;
@Column(name="nome")
private String nome;
@Column(name="email")
private String email;
@Column(name="cpf")
private int cpf;
@Column(name="data_nascimento")
private String dataNascimento;
@Column(name="celular")
private String telefoneCelular;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getCpf() {
return cpf;
}
public void setCpf(int cpf) {
this.cpf = cpf;
}
public String getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(String dataNascimento) {
this.dataNascimento = dataNascimento;
}
public String getTelefoneCelular() {
return telefoneCelular;
}
public void setTelefoneCelular(String telefoneCelular) {
this.telefoneCelular = telefoneCelular;
}
}
package br.com.teste.dao;
import br.com.teste.modelo.Pessoa;
import java.util.List;
import org.hibernate.Session;
public class PessoaDAO {
private Session sessao;
public PessoaDAO(Session sessao) {
this.sessao = sessao;
}
public void Inserir(Pessoa p) {
this.sessao.save(p);
}
public void Remover(Pessoa p) {
this.sessao.delete(p);
}
public void Atualizar(Pessoa p) {
this.sessao.merge(p);
}
public List<Pessoa> listaTudo() {
return this.sessao.createCriteria(Pessoa.class).list();
}
public Pessoa Procurar(int id) {
return (Pessoa) sessao.load(Pessoa.class, id);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://10.0.0.15:3306/teste1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<mapping class="br.com.teste1.modelo.Pessoa" />
</session-factory>
</hibernate-configuration>
package br.com.teste.util;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() {
return sessionFactory.openSession();
}
}
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form name="cadastraPessoa" action="PessoaServlet" method="post">
Nome: <input type="text" name="nome" value="" /><br />
E-mail: <input type="text" name="email" value="" /><br />
CPF: <input type="text" name="cpf" value="" /><br />
Data Nascimento: <input type="text" name="dataNascimento" value="" /><br />
Celular: <input type="text" name="celular" value="" /><br />
<input type="submit" value="Inserir" />
</form>
</body>
</html>
package br.com.teste.servlets;
import br.com.teste.dao.PessoaDAO;
import br.com.teste.modelo.Pessoa;
import br.com.teste.util.HibernateUtil;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class PessoaServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
try {
String nome = request.getParameter("nome");
String email = request.getParameter("email");
int cpf = Integer.parseInt(request.getParameter("cpf"));
String dataNascimento = request.getParameter("dataNascimento");
String celular = request.getParameter("celular");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet PessoaServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("Nome: " + nome + "<br />");
out.println("E-mail: " + email + "<br />");
out.println("CPF: " + cpf + "<br />");
out.println("Data Nascimento: " + dataNascimento + "<br />");
out.println("Celular: " + celular + "<br />");
out.println("</body>");
out.println("</html>");
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = HibernateUtil.getSession();
Pessoa p = new Pessoa();
p.setNome(nome);
p.setEmail(email);
p.setCpf(cpf);
p.setDataNascimento(dataNascimento);
p.setTelefoneCelular(celular);
try {
PessoaDAO dao = new PessoaDAO(session);
Transaction t = session.beginTransaction();
dao.Inserir(p);
t.commit();
}
catch (Exception e) {
out.println("Nao salvou!");
}
finally {
session.close();
}
}
finally {
out.close();
}
}
@Override
public String getServletInfo() {
return "Short description";
}
}
Se alguem ver algum erro ou descobrir o que está faltando e puder me ajudar, serei muito grato.
Recaptulando: quando eu envio os dados do jsp para a servlet, essa apenas mostra os dados recuperados pelo POST e nada acontece no BD.
Desde ja argadeço.