Hibernate - resultado aparece no console mas naum no banco

2 respostas
henriquedamota

Olá pessoal ! Boa Tarde....

To com um problema estranho... o resultado por exemplo de um save(), aparece no console mas no banco(MySQL) naum...

estou dando um "select * from produto" no cmd do mysql e aparece Empty set...

soh que quando rodo o Adiciona Produto, vai numa boa...

Tenho tb a classe de GeraTabelas que funcionou perfeitamente...

Bom vou colocar os codigos abaixo...

hibernate.properties
hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/test
hibernate.connection.username root
hibernate.connection.password admin
HibernateUtil
package br.com.caelum.hibernate;

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

public class HibernateUtil {
	
	private static SessionFactory factory;
	
	static{
		
		//cria configuração para a classe Produto
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		
		factory = cfg.buildSessionFactory();	
	}
	
	public static Session getSession(){
		
		return factory.openSession();
		
	}
}
GeraTabelas
package br.com.caelum.hibernate;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class GeraTabelas {
	
	public static void main(String[] args) {
		
		//cria configuração para a classe Produto
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
			
		//criar a tabela
		new SchemaExport(cfg).create(true, true);
		
	}

}
[/b]JavaBean Produto
package br.com.caelum.hibernate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Produto {
	
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private String descricao;
	private Double preco;
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Double getPreco() {
		return preco;
	}
	public void setPreco(Double preco) {
		this.preco = preco;
	}
	

}
[b]ProdutoDAO
package br.com.caelum.hibernate.dao;

import java.util.List;

import org.hibernate.Session;

import br.com.caelum.hibernate.Produto;

public class ProdutoDAO {
	
	private Session session;
	
	public ProdutoDAO (Session session){
		this.session = session;
	}
	
	public void salva (Produto p){
		this.session.save(p);
	}
	
	public void remove (Produto p){
		this.session.delete(p);
	}
	
	public Produto procura (Long id) {
		return (Produto) this.session.load(Produto.class, id);
	}
	
	public void atualiza (Produto p){
		this.session.update(p);
	}
	
	public List<Produto> listaTudo(){
		return this.session.createCriteria(Produto.class).list();		
	}
	
	public List<Produto> pagina(int inicio, int quantia){
		return this.session.createCriteria(Produto.class).setMaxResults(quantia).setFirstResult(inicio).list();
	}
	
	public List<Produto> listaAPartirdoTerceiro(){
		return this.session.createQuery("from br.com.caelum.hibernate.Produto where id>2").list();		
	}
	
}
ProdutoDAO
package br.com.caelum.hibernate;

import org.hibernate.Session;

import br.com.caelum.hibernate.dao.ProdutoDAO;

public class AdicionaProduto {
	
	public static void main(String[] args) {
		
		Session session = HibernateUtil.getSession();
		
		Produto p = new Produto();
		p.setNome("Com dao");
		p.setDescricao("Descrição aqui");
		p.setPreco(100.50);
		
		ProdutoDAO dao = new ProdutoDAO(session);
		dao.salva(p);
		
		System.out.println("ID do poduto: "+ p.getId());
		
		
		session.close();		
		
	}

}

Bom ai esta todo o codigo relacionado... Obrigado ai pela ajuda...

Valeu !

2 Respostas

andreiribas

No DAO, pra fazer as operações de incluir e excluir você tem que começar uma transação…

Transaction tx = session.beginTransaction();

e no fim da operação você faz o commit:

tx.commit();

se der erro você faz um rollback:

tx.rollback();

por exemplo:

public void remove (Produto p){
             Transaction tx = session.beginTransaction();
             try {
 		this.session.delete(p);
                tx.commit();
             }
             catch(HibernateException e) {
                tx.rollback();
             }
             finally {
                session.close();
             }
       }
henriquedamota

Opaaaaaaaaaa !!!

vc foi Preciso e Infalível como Bruce Lee ! uhuhuh

Muito Obrigado ! ce me ajudo mto !!!

Ateh mais !

Criado 20 de agosto de 2007
Ultima resposta 21 de ago. de 2007
Respostas 2
Participantes 2