LogIn Usando Hibernate [Resolvido]

3 respostas
M

Bom dia!

Estou fazendo uma aplicação, onde devo validar Usuario e Senha, para ques eja exibida a tela de boas vindas.
A interface gráfica é em JSP.

Mas só que esta acontecendo, de quando se digita usuario e senha, mesmo se a senha não é a mesma do usuario, a tela aparece. Somente se o 'Usuario' estiver incorreto, que ele da a mensagem de erro.
Minha dúvida é como consigo fazer com que ele valide a senha, de acordo com o usuario?

Por favor, quem puder me ajudar ficaria muito grato. Segue os códigos:

Metodo da classe de Conexao

public Funcionario validarSenha(String user, String pass){
		   Session session = factory.openSession();
		   Funcionario s = (Funcionario)session.load(Funcionario.class,user);
		   s.setUsuario(user);
		   s.setSenha(pass);
		   session.flush();
		   session.close();
		   return s;
	   }

Trecho onde se faz a verificação:

<%
		String nome = request.getParameter("usuarioJSP");
		String senha = request.getParameter("senhaJSP");
		
		try{
			
		HibernateDAO dao = new HibernateDAO();
		
		Funcionario f = dao.validarSenha(nome, senha);	
			
			if((nome.equals(f.getUsuario())) && (senha.equals(f.getSenha()))){				
			....
		}%>

Estou começando agora a usar Hibernate, quem tiver um material de apoio para indicar, também agradeceria.
Até mais.

3 Respostas

W

public Funcionario validarSenha(String user, String pass){ Session session = factory.openSession(); Funcionario s = (Funcionario)session.load(Funcionario.class,user); // aqui você carrega o funcionário do banco de dados com o usario e senha lá cadastrados s.setUsuario(user); // mas aqui você substitui o usuário s.setSenha(pass); // e aqui a senha, com os valores passados por parâmetro session.flush(); session.close(); return s; }
tente:

public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha Session session = factory.openSession(); Funcionario s = (Funcionario)session.load(Funcionario.class,user); session.flush(); session.close(); return s; }

M

public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha Session session = factory.openSession(); Funcionario s = (Funcionario)session.load(Funcionario.class,user); session.flush(); session.close(); return s; }[/quote]

Muito obrigado pela ajuda wbdsjunior!

Eu ainda não entendo bem alguns comandos do Hibernate.

Mas só um detalhe. Após fazer o código que me passou, ocorreu o erro: could not initialize proxy - no Session

Pesquisando aqui no guj mesmo, encontrei uma solução, que no caso, o código que vc me passou ficou assim:

public Funcionario getFuncionario(String user){ // o nome ajuda a entender o que o método faz... também não é necessário passar a senha Session session = factory.openSession(); Funcionario s = (Funcionario)session.load(Funcionario.class,user); s.toString(); session.flush(); session.close(); return s; }

O tópico que fala desse erro [could not initialize proxy - no Session] é este.

Mas muito obrigado pela ajuda, agora pelo menos tenho uma base de como funciona o load. =D

[]'s

I

Aproveitando o tópico, estou fazendo um login fiz como colocaram no tópico só que o meu está dando este erro

Erro

[INFO: Not binding factory to JNDI, no JNDI name configured

Exception in thread AWT-EventQueue-0 org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.Integer, got class java.lang.String

at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)

at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)

at org.hibernate.impl.SessionImpl.load(SessionImpl.java:795)

at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788)]
Metodo

[    public Usuario validarSenha(String login, String senha){

//Inicia Conexao

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

//Puxa os Dados do Banco

Usuario s = (Usuario)session.load(Usuario.class,login);

s.setLogin(senha);

s.setSenha(login);

//Fecha Conexao

session.beginTransaction().commit();

//Retorna os Dados

return s;

}]
Onde estou chamando o metodo

[        String login = txtLogin.getText();

String senha = txtSenha.getText();
UsuarioHibernateDao uDao = new UsuarioHibernateDao();
        
        Usuario u = uDao.validarSenha(login, senha);
        
        if(login.equals(u.getLogin()) && (senha.equals(u.getSenha()))){
            JOptionPane.showMessageDialog(null,"Login Efetuado com Sucesso");
        }
        else{
            JOptionPane.showMessageDialog(null,"Usuário ou Senha inválidos");
        }]

Porque está dando erro ?

Desde de já agradeço !

Criado 5 de agosto de 2011
Ultima resposta 4 de jul. de 2013
Respostas 3
Participantes 3