Duvidas de Hibernate

2 respostas
J

Caros colegas
Estou estudando hibernate e fiz uma pequena aplicacao web,ocorre que quando estou validando o usuario ocorre um erro de “java.lang.NullPointerException”.

1.Arquivo de configuração do hibernate

org.hibernate.dialect.HSQLDialect true "org.hsqldb.jdbcDriver" jdbc:hsqldb:mem:test sa

2.Mapeamento da minha classe usuario

3.Classe usuariohbdao com o metodo open que faz a conecxao com o bd.

public String open() {

try       {

url = UsuarioHbDao.class.getResource(hibernate-config.xml);

cfg = new Configuration();

cfg.configure(url);

sf = cfg.buildSessionFactory();

session = sf.openSession();

session.setFlushMode(FlushMode.COMMIT);

aberta=true;

return “”;

} catch(HibernateException e) {

System.out.println("ERRO FATAL: camada de persistencia DataManager / Hibernate - " + e.getMessage());

e.printStackTrace();

aberta=false;

return e.getMessage();

}

}

4.Classe usuariohbdao com o metodo valida onde esta ocorrendo o erro.

public int valida(String login, String pwd){

int cod = 0;

try {

Query select = session.createQuery(select cdUsuario from USUARIO where nmUsuario=:login and dsPassword=:pwd);

select.setString(login,login);

select.setString(pwd,pwd);

List usuario  =  select.list();

cod = (Integer.parseInt(usuario.get(0).toString()));

} catch (HibernateException ex) {

ex.printStackTrace();

} finally {

try {

close();

} catch (HibernateException ex) {

ex.printStackTrace();

}

}
if (cod > 0 ){
        return cod;
    }else{
        return 0;
    }
    
    
}

2 Respostas

antoniopopete

Você poderia detalhar melhor o problema?
Mas eu acho que o NullPointer é porque sua session não está instanciada. Pelo que entendi voce abre a session e um método e usa ela em outro.
Eu acho que dar um buildSessionFactory a cada transação não é a melhor maneira de se utilziar o hibernate não por esse objeto SessionFactory é muito caro de ser construido.
Tente esses links

http://www.guj.com.br/java.artigo.125.1.guj
http://www.javafree.org/javabb/viewtopic.jbb?t=3721
http://www.jeebrasil.com.br/tags/hibernate (MUITO BOM)

J

:frowning: Obrigado pelas dicas , mais o problema continua.Eu criei as seguintes variaveis de instancia :

public class  UsuarioHbDao {

private static  UsuarioHbDao instance = new  UsuarioHbDao();

protected URL url  ;

protected Configuration cfg ;

protected SessionFactory sf ;

protected Session session ;

private boolean aberta;

De modo que eu posso usar a session de qualquer metodo da classe , mais fiz um teste das 2 formas ou seja criando a session dentro do metodo o erro é o mesmo.
meu problema é o seguinte :
Tenho um tela onde o usuario informa login e senha e clicka no botão enviar,no click botão enviar é executado um servlet que instancia uma classe dao(UsuarioHBdao) e executa o metodo valida passando como parâmetro login e senha neste momento ocorre o erro :

java.lang.NullPointerException

br.persistencia.UsuarioHbDao.valida(UsuarioHbDao.java:116)

br.servlets.Controlador.doPost(Controlador.java:113)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Criado 1 de setembro de 2007
Ultima resposta 1 de set. de 2007
Respostas 2
Participantes 2