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.
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();
}
}
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
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 :