Eu estou estudando a apostila da Caelum FJ-28, e estou usando o postgres.
desde o primeiro TestaUsuario já estava dando errado.
Assim eu criei tudo certo porem, quando ele fala pra salvar Login- “admin” e Senha - “admin” o eclipse dizia que estava tudo certo mas não inseria nada no banco. Mas ele cria a tabela Usuario certinho.
Ae eu tentei arrumar de todas as formas e não funcionou,
então eu continuei a apostila pra ver se dava certo né, criei o HibernateUtil, DaoFactory e a Dao generica,
mas nada funciona ele da isso aqui no console quando eu coloco pra rodar:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
select
nextval (‘hibernate_sequence’)
Hibernate:
select
this_.id as id0_0_,
this_.login as login0_0_,
this_.senha as senha0_0_
from
Usuario this_
E continua sem salvar nada no banco. Alguem sabe me ajudar?
packagebr.com.caelum.lojavirtual.main;importjava.util.List;importorg.hibernate.Session;importbr.caelum.lojavirtual.util.HibernateUtil;importbr.com.caelum.lojavirtual.dao.DaoFactory;importbr.com.caelum.lojavirtual.dao.Dao;importbr.com.caelum.lojavirtual.modelo.Usuario;publicclassTestaUsuario{publicstaticvoidmain(String[]args){Daodao=newDaoFactory().getUsuarioDao();//adiciona um usuarioUsuariou=newUsuario();u.setLogin("admin");u.setSenha("senha");dao.adiciona(u);//lista usuariosList<Usuario>lista=dao.listaTudo();for(Usuariousuario:lista){System.out.println(usuario.getLogin());}}}
Tiburcio_Mancha, querido funcionou! muito obrigada, estava ralando a dias nisso.
teria como me explicar o que foi feito?
Tiburcio_Mancha
Operações de persistência na base com Hibernate é exigido que vc use transação,o que é uma segurança para sua aplicação. Por exemplo, se ocorrer algum problema no escopo da transação, seus dados não são salvos. Imagina no meio da operação de persistencia, ocorre um problema e vc tem um registro salvo de forma errada ou incompleta?
Vc pode realizar um tratamento de excessão com try e catch, onde no fim do trecho do try é declarado o commit da transação. Este comando salva os dados que estão na cash do hibernate depois que foi executado o save na base. No catch vc declara o rollbak, onde se ocorrer a excessão que vc tratou, os dados não são persistidos na base. Vide o código que te passei.
Nãos ei se minha explicação ficou boa, os amigos do Guj podem explicar de uma forma melhor e também na net tem muita coisa explicando transação.