Ola pessoal!
Estou iniciando em Spring. Gostaria de utiliza-lo ao invés de usar Struts.
Assim estou tentando utilizar Hibernate + Spring + BD=MySql. Considerando que todos os mapeamentos O/R do Hibernate estão corretos, o seguinte código funciona perfeitamente:
Session sessao=null;
Transaction tx=null;
try { sessao= HibernateFabrica.abreSessao();
tx = sessao.beginTransaction();
sessao.save(evento); // todas as propriedades Bean evento
// estão mapeadas corretamente no seu hbm.xml
tx.commit();
}catch (HibernateException e) {
HibernateFabrica.rollBack(tx);
throw e;
}
finally{
HibernateFabrica.fechaSessao(sessao);
HibernateFabrica.fechaFabrica();
}
Ou seja, os dados são verdadeiramente SALVOS no BD. No entanto, ao utilizar o Spring os dados NAO estão sendo salvos no BD, apesar do código compilar e executa corretamente, o que indica que todas as bibliotecas estão no classpath da aplicação. O código acima é substituido pelo código que utiliza Spring:
SessionFactory sf = HibernateFabrica.getFabricaSessao();
HibernateTemplate template = new HibernateTemplate(sf);
template.save(evento);
A classe HibernateTemplate, é do Spring e assim esta assume toda a responsabilidade de abrir a sessão, a transação, gerenciar as exceções, bem como finalizar corretamente os recursos abertos. Assim, estou assumindo que o Spring utilizará o objeto SessionFactory, o qual tem todas as informações do arquivo Hibernate.cfg.xml como: username, password, url, Driver, e os hbm.xml
Estou utilizando o Hibernate 3.1, Spring FrameWork 1.2.8 e MySql 5.0.24. Considerando que estou utilizando somente os mapeamentos padrão do hibernate, gostaria de saber se para utilizar o Spring DEVE necessáriamente fazer algum mapeamento exclusivo para o Spring, ou se existe algo mais que deva ser feito para fazer este último código funcionar, ou seja, salvar verdadeiramente os dados no BD.
PS1: Um detalhe que observei ao executar o código com Spring é que as Primary Key no BD são incrementadas automaticamente ao rodar código, no entanto, nenhuma linha é inserida nas tabelas envolvidas.
PS2: Por enquanto trata-se de uma aplicação standalone, portanto, fora de um contexto de Servidor Web.