Hibernate - save() e saveOrUpdate()

ola pessoal,

Estou desenvolvendo uma aplicação utilizando hibernate, só que estou tendo problemas ao tentar salvar na base de dados, as consultas estao funcionando normalmente.
Ele nao gera exception e de acordo com o log, parece que ocorreu tudo normalmente, mas quando vou verificar a base de dados, ele nao inseriu o registro.

Alguém ja passou por isto, ou se tiver alguma dica de como solucionar este problema, ficaria grato.

Abaixo vai uma pequena parte do log:

09:38:16,261  INFO SessionFactoryImpl:161 - building session factory
09:38:16,886  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
09:38:16,886  INFO HibernateSessionFactory:22 - opening new session
09:38:17,120 DEBUG SQL:393 - select this_.id as id0_0_, this_.descricao as descricao0_0_, this_.uf as uf0_0_ from estado this_ order by this_.uf asc
Hibernate: select this_.id as id0_0_, this_.descricao as descricao0_0_, this_.uf as uf0_0_ from estado this_ order by this_.uf asc
09:38:17,167  INFO HibernateSessionFactory:22 - opening new session
09:38:17,214 DEBUG SQL:393 - select this_.idparoquia as idparoquia1_0_, this_.nome as nome1_0_, this_.descricao as descricao1_0_, this_.endereco as endereco1_0_ from paroquia this_ order by this_.nome asc
Hibernate: select this_.idparoquia as idparoquia1_0_, this_.nome as nome1_0_, this_.descricao as descricao1_0_, this_.endereco as endereco1_0_ from paroquia this_ order by this_.nome asc
09:38:51,464  INFO HibernateSessionFactory:22 - opening new session
09:38:51,464  INFO Dao:27 - salvando Paroquia: null Nome: teste Endereco: teste
09:38:51,480 DEBUG SQL:393 - select max(idparoquia) from paroquia
Hibernate: select max(idparoquia) from paroquia

Poste o seu código ae !

Abraço.

ta blz…
ParoquiaForm

public void actionPerformed( ActionEvent event )
	{
		Session session = null; 
		session = HibernateSessionFactory.openSession();
		ParoquiaDao paroquiaDao = new ParoquiaDao(session);		
		if(event.getActionCommand().equals("Cadastrar")){
			
				Paroquia paroquia = new Paroquia();
				paroquia.setNome(nomeText.getText());
				paroquia.setDescricao(descricaoField.getText());
				paroquia.setEndereco(enderecoTextPane.getText());
				paroquiaDao.save(paroquia);
			
		}
	}

paroquiaDao

package src.model.home;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

import src.model.Paroquia;

public class ParoquiaDao extends Dao<Paroquia>{

	Session session = super.getSession();
	
	public ParoquiaDao(Session session) {
		super(session, Paroquia.class);		
	}
	
	@SuppressWarnings("unchecked")
	public List<Paroquia> buscaParoquia(String descricao){
		Criteria c = session.createCriteria(Paroquia.class);
		c.add(Restrictions.ilike("descricao", descricao));
		c.addOrder(Order.asc("uf"));
		return c.list();
	}
	
	@SuppressWarnings("unchecked")
	public List<String> buscaNomesDeParoquias(){
		Criteria c = getSession().createCriteria(Paroquia.class);
		c.setProjection(Projections.property("descricao"));
		return c.list();
	}
	
	@SuppressWarnings("unchecked")
	public List<Paroquia> listaParoquias(){
		Criteria criteria = session.createCriteria( Paroquia.class );
		criteria.addOrder(Order.asc("nome"));
		return criteria.list();
	}
}

Dao

package src.model.home;

import org.apache.log4j.Logger;
import org.hibernate.Session;

public class Dao<T> {
	private static Logger logger = Logger.getLogger(Dao.class);
	private Class persistentClass;
	private Session session;
	
	public Dao(Session session, Class persistentClass){
		this.session = session;
		this.persistentClass = persistentClass;
	}
	
	protected Session getSession() {
		return session;
	}
	
	@SuppressWarnings("unchecked")
	public T load(Long id){
		logger.info("lendo "+persistentClass+"com id "+id);
		return (T) session.load(persistentClass, id);
	}
	
	public void save(T t){
		logger.info("salvando "+t);
		session.save(t);
	}
}

Como pode ver, eu tentei utilizar o código do MundoJava mas nao usei anotaçoes, pode ter interferido em alguma coisa em particular?

Obrigado galera pela ajuda. :smiley:

Verifique 2 pontos a princípio :

Verifique no log, se está passando no método Save() da sua classe DAO.
Se estiver passando, então verifique se a classe que você está salvando, está mapeada no seu hibernate.cfg.xml.
Se estiver mapeada e passando no save(), verifique se elagum ponto você abre uma transação e não dá o commit().

Abraço.

Agora funcionou, obrigado Luis Soares… estava faltando o transation :oops:
ehehe… um outro pequeno detalhe, teria como me dizer se esta seria uma implementação aceitavel ou se teria uma mais indicada, segue a parte do código que adicionei o commit

public void save(T t){
	logger.info("salvando "+t);
	Transaction transation = session.beginTransaction();
	logger.info("Abrindo Transacao " + transation);
	session.save(t);
	transation.commit();
}

Cara, isso depende do seu projeto. Se for um projeto crítico, aconselho melhorar o controle de transações, ter uma classe com essa responsabilidade.
Mas esta implementação resolve o problema de maneira simples. Eu a adotaria em um projeto comum, sem maiores necessidades.

Abraço !