Problema Hibernate FJ28

Boa noite, estou estudando hibernate pela apostila da caelum FJ28, mas não estou conseguindo persistir o meu objeto. Acho que a maioria ja deu uma lida nessa apostila, então eu vou ser direto. Ela inicia bem simples com a configuração do hibernate, criação da classe Usuario e TestaUsuario. Ate ai tudo bem, ele adicionou certo no banco. Então começa a explicar como funciona com uma classe Dao, faz um exemplo de salvar e listar, que tambem funcionou. Então começa a separar as tarefas criando a classe HibernateUtil e colocando a configuração do hibernate nela e criando um DaoFactory, ai bagunçou tudo, ele não da mensagem de erro, mostra na saida do eclipse a query “insert” pro banco e lista como se tivesse inserido no banco, mas quando vamos verificar não esta la o registro. Alguem teve esse problema ao seguir a apostila??
Segue o meu codigo:

[code]public class TestaUsuario {

public static void main(String[] args) {
	UsuarioDao dao = new DaoFactory().getUsuario();

	Usuario u = new Usuario();
	u.setLogin("admin");
	u.setSenha("admin");

	dao.adiciona(u);

	List<Usuario> lista = dao.ListaTudo();
	for (Usuario usuario : lista) {
		System.out.println(usuario.getLogin());
	}
}

}[/code]

[code]
public class DaoFactory {

private final Session session;
private Transaction transaction;

public DaoFactory(){
	session = HibernateUtil.getSession();
}

public void beginTransaction(){
	this.transaction = this.session.beginTransaction();
}

public void commit(){
	this.transaction.commit();
	this.transaction = null;
}

public boolean hasTransaction(){
	return this.transaction != null;
}

public void rollBack(){
	this.transaction.rollback();
	this.transaction = null;
}

public void close(){
	this.session.close();
}

public UsuarioDao getUsuario(){
	return new UsuarioDao(this.session);
}

}[/code]

[code]
public class UsuarioDao {

private Session session;

public UsuarioDao(Session session) {
	this.session = session;
}

public void adiciona(Usuario u) {
	this.session.save(u);
}

public void remove(Usuario u) {
	this.session.delete(u);
}

public void atualiza(Usuario u) {
	this.session.merge(u);
}

public List<Usuario> ListaTudo() {
	return this.session.createCriteria(Usuario.class).list();
}

public Usuario procura(Long id) {
	return (Usuario) session.load(Usuario.class, id);
}

}[/code]

[code]
public class HibernateUtil {

private static SessionFactory factory;

static {
	Configuration conf = new AnnotationConfiguration();
	conf.configure();
	factory = conf.buildSessionFactory();
}

public static Session getSession() {
	return factory.openSession();
}

}[/code]

Toda ajuda sera bem vinda!

não esquece de chamar dao.commit() depois de dao.beginTransaction() e .adiciona(x)

Abraços

Obrigado pela atenção joaosavio, mas ainda nao consegui, porque quando eu instancio UsuarioDao dao = new DaoFactory().getUsuario(); eu tenho acesso somente aos metodos da classe UsuarioDao e não sei como usar o commit que esta na classe DaoFactory. Desculpe a ignorancia, mas ta dificil mesmo.

qual o erro ocorre ? manda o teu xml

Como eu disse acima, não da erro nenhum, ate veja na saida do eclipse a query sendo “executada” mas quando eu olho no banco de dados não esta lá.
segue o hibernate.cfg.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

com.mysql.jdbc.Driver 123 jdbc:mysql://localhost/lojahibernate root org.hibernate.dialect.MySQL5InnoDBDialect true true
	<mapping class="loja.Usuario"/>
</session-factory>

[/code]

Desde ja agradeço a ajuda.

[color=blue]public class TestaUsuario {

public static void main(String[] args) {   
    DaoFactory fct = new DaoFactory();
UsuarioDao dao = fct.getUsuario();

    Usuario u = new Usuario();   
    u.setLogin("admin");   
    u.setSenha("admin");   

fct.beginTransaction();
    
dao.adiciona(u);   

    List<Usuario> lista = dao.ListaTudo();   
    for (Usuario usuario : lista) {   
        System.out.println(usuario.getLogin());   
    }   

fct.commit();
fct.close();
}   

}

Não tive como testar… mas ve se lhe ajuda em algo…

Sds…
[/color]

qualquer coisa, mude o seu dialeto do XML para

org.hibernate.dialect.MySQLDialect

numa aplicacao minha fica assim

DAOFactory dao = new DAOFactory();
UsuarioDAO usuarioDAO = dao.getUsuarioDAO();

aí se fosse atualizar um usuario:

UsuarioVO usuarioVO = new UsuarioVO(); // classe com sets e gets
usuarioVO.setLogin("adm");
usuarioVO.setSenha("adm");

dao.beginTransaction();
usuarioDAO.atualiza(usuarioVO);    
dao.commit();

Qualquer duvida posta aí

[color=blue]kkkkkkkkk

o joaosavio simplesmente reforço o q eu tinha feito acima :smiley:

Sds…[/color]

vich cara nem vi q vc ja tinha respondido euhauhuhaa

Abraços