Hibernate não insere no Mysql [Resolvido]

4 respostas
wagne23
Ai gente, dei uma boa olhada aqui no forum mas não encontrei solução para o meu problema. Estou tentando aprender hibernate mas ta complicado, finalmente eu consegui fazer o eclipse encontrar o "hibernate.cfg.xml" e estou tentando inserir dados em um banco Mysql, ele não da mensagem de erro, mas tambem não manda nada pro banco. Os meu arquivos estão assim:
package hibernate;

public class Contato {
	
	private String nome;
	private String sobrenome;
	private String email;
	private int id;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSobrenome() {
		return sobrenome;
	}
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}	
}
contato.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="hibernate.Contato"
		table="contato">
		<id name="id" type="int" column="id">
			<generator class="assigned" />
		</id>

		<property name="nome">
			<column name="nome" />
		</property>
		<property name="sobrenome">
			<column name="sobrenome" />
		</property>
		<property name="email">
			<column name="email" />
		</property>
	</class>		

</hibernate-mapping>
Hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hiber4</property>
      <property name="hibernate.connection.username">root</property>
      <property name="hibernate.connection.password">123</property>
      <property name="hibernate.connection.pool_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <property name="hibernate.hbm2ddl.auto">update</property>
      <!-- Mapping files -->
      <mapping resource="contato.hbm.xml"/>
</session-factory>
</hibernate-configuration>
E por ultimo um teste
package hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Teste {
	public static void main(String Args[]){
		Session session = null;
		try{
			SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
			session = sessionFactory.openSession();
			System.out.println("Inserindo Registro!!!");
			Contato contato = new Contato();
			//contato.setId(6);
			contato.setNome("Wagner");
			contato.setSobrenome("Soares");
			contato.setEmail("[email removido]");			
			session.save(contato);
			System.out.println("Registro Inserido!");
	}catch(Exception e){
		System.out.println(e.getMessage());
	}finally{
		session.flush();
		session.close();
	}
	}

}
o eclipse me mostra como resultado
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Inserindo Registro!!!
Registro Inserido!
Hibernate: insert into contato (nome, sobrenome, email, id) values (?, ?, ?, ?)

sera que alguem pode me ajudar por que ja estou ficando doido.
Desde ja agradeço.

4 Respostas

kissdemon

Amigo,

se nao abrir e fechar uma transação, não vai conseguir inserir nada mesmo…

[]´s

Carlos

wagne23

kissdemon, obrigado pela ajuda, mas como eu disse eu estou aprendendo ainda hibernate, esse exemplo eu tirei de um tutorial que peguei na net, e eu não sei como abrir uma transação, se vc tiver um exemplo pra me ajudar eu ficaria muito grato. Falou.

kissdemon

Exemplo:

package hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Teste {
	public static void main(String Args[]){
		Session session = null;
		try{
			SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
			session = sessionFactory.openSession();
			System.out.println("Inserindo Registro!!!");
			Contato contato = new Contato();
			//contato.setId(6);
			contato.setNome("Wagner");
			contato.setSobrenome("Soares");
			contato.setEmail("[email removido]");
                        Transaction tx = session.begintransaction();		//inicia a Transacao	
			session.save(contato);
                        tx.commit();                                                         //commit
                        session.close();                                                    //fecha a sessão
			System.out.println("Registro Inserido!");
	}catch(Exception e){
		System.out.println(e.getMessage());
	}finally{
		session.flush();
		session.close();
	}
	}

}
wagne23

Ai agora funcionou, eu procurei sobre transação e vi que faltavam algumas coisas, eu add essas duas linhas

session.beginTransaction();

e session.getTransaction().commit();
Pela primeira vez eu fiz o hibernate funcionar.
Valeu mesmo.

Criado 30 de abril de 2008
Ultima resposta 30 de abr. de 2008
Respostas 4
Participantes 2