Duvidas utilizando classe DAO

3 respostas
somma

Olá pessoa estou tentando criar um cadastro para aprender a mexer com classes DAO.

Vamos lá,
Crie um classe de Conexão,
Uma classe DAO e um
Servlet que faz a inserção no banco de dados MySQL.

Está quase tudo funcionando, estou obtendo o erro de NullPointerException quando o Servlet tenta criar a conexão. Já fiz as minhas verificações e não estou conseguindo encontrar o erro.

Segue os códigos e muito obrigado

Conexao
public class Conexao {
    
    private static String DRIVER = "com.mysql.jdbc.Driver";
    private static String URL = "jdbc:mysql://localhost/teste"; // a JDBC url
    private static String USUARIO = "";
    private static String SENHA = "";
    
    /** Criando uma nova instancia de Conexao */
    public Conexao() {
    }
    
    /**
     *Obtem a conexao
     */
    public static Connection getConnection() throws SQLException {
        
        try {
            Class.forName(DRIVER);
            return DriverManager.getConnection(URL,USUARIO,SENHA);
            
        } catch (ClassNotFoundException e){
            throw new SQLException(e.getMessage().toString());
        }
    }  
}

Classe DAO

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CadastreStaffDAO {
    Connection conn=null;
    
    private final String SQLInsert = "INSERT INTO tbl_dados_pessoais(nm_cliente, ds_endereco) VALUES (?,?)";
    
    /** Creates a new instance of CadastreStaffDAO */
    public CadastreStaffDAO(Connection conn) {
        this.conn = conn;
    }
    
    public boolean inserir(CadastreStaff param)throws SQLException{
        
        PreparedStatement stmt;
        
        try{
            stmt = conn.prepareStatement(SQLInsert);
            stmt.setString(1,param.getCliente());
            stmt.setString(2,param.getEndereco());
           
            stmt.execute();
            stmt.close();
            conn.close();
            
        } catch(Exception e){
            return false;
        }
        return true;
    }      
}

Servlet é aqui que estou tendo o erro ele da erro no try{}cathc(){} no void init(){} e depois da erro no try{}cathc(){}de inserção.

import br.com.iperfil.classe.CadastreStaff;
import br.com.iperfil.classe.Conexao;
import br.com.iperfil.classe.CadastreStaffDAO;

public class CadPessoal extends HttpServlet {
    
    Conexao conexao = new Conexao();
    CadastreStaff param = new CadastreStaff(); 
    CadastreStaffDAO bancoDados = null;
     
    /**Cria a Conexão*/
     public void init(){
         try {
             bancoDados = new CadastreStaffDAO(conexao.getConnection());
             System.out.println("*************OK!!!!");
         } catch (SQLException ex){
             ex.printStackTrace();
             System.out.println("Error de conexão "+ex);
         }catch (Exception e){
             System.out.println("Falha ao carregar driver.");
             return;
         }
     }
                
   public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException{
        
        String cadSucesso = "www/profissional/cadastrar/sucesso.jsp";
        String cadError = "www/profissional/cadastrar/pageError.jsp"; 
        
        if(ds_Senha.equals(ds_SenhaConfir)){

            try{

                param.setCliente(request.getParameter("ds_Nome"));
                param.setEndereco(request.getParameter("ds_Endereco"));
                
                bancoDados.inserir(param);
                response.sendRedirect(cadSucesso);

            }catch(NumberFormatException e){
                System.out.println(e.toString());
                e.printStackTrace();
            }catch(Exception e){
                System.out.println("<br><br>"+e.toString());
                e.printStackTrace();                
            }
            
        }else{
            response.sendRedirect(cadError);
        }
    } 
}

3 Respostas

Hammer

esta usando o annotations do hibernate? se nao recomendo utilizar pois auxilia bastante

veja um exemplo ca calsse dao:

package dao;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.ConnectDB;
import entity.Andamento;
import entity.Servicos;

public class AndamentoHibernateDAO {
	
	private Session session;
    private Transaction tx = null;
    Iterator iterator = null;
    
public void salvar(Andamento andamento) {
		
		session = ConnectDB.getInstance();

        try {
        	tx = session.beginTransaction();
        	session.save(andamento);
        	tx.commit();
        } catch (HibernateException e) {
        	e.printStackTrace();
        } finally {
        	session.close();
        }
	}
    
    public void remover(Andamento andamento) {
		session = ConnectDB.getInstance();
		Transaction tx = null;
		
		try {
			tx = session.beginTransaction();
			session.delete(andamento);
			tx.commit();
		}
		
		catch(HibernateException e) {
			e.printStackTrace();
		}
		finally {
			session.close();
		}
	}
    
    public List consultarTabela() {
		session = ConnectDB.getInstance();
		List list = session.createQuery("from Andamento as Andamento").list();
		return list;
	}
}

calsse conecctDB"

package utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

public class ConnectDB {
	
	private static final SessionFactory sessionFactory;
	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
	
	static {
		
		try {
			Configuration configuration = new AnnotationConfiguration();
			configuration.configure("hibernate.cfg.xml");
			sessionFactory = configuration.buildSessionFactory();
		}
		
		catch (Throwable t) {
			throw new ExceptionInInitializerError(t);
		}
	}
	
	public static Session getInstance() {
		Session session = (Session) threadLocal.get();
		session = sessionFactory.openSession();
		threadLocal.set(session);
		return session;
	}
}

vc ainda tem q ter um arquivo em xml q mapeia as classes, apenas 1, junto com usuario e senha do banco

somma

Bom eu não sei trabalhar com o Hybernate???mas pelo o que estou vendo terei mais um desafio!!!

Com este código que me mandou eu consigo fazer uma aplicação simples de inserção no banco para ja ter uma noção???

E mais uma coisa eu preciso instalar o hybernate?

como este framework funciona?

obrigado

Hammer

vc precisa adicionar os arquivos jars do hibernate na biblioteca do seu projeto

e vc podera fazer buscas melhores como esta so rpa dar um exemplo:

public Andamento consultarData(String codigo) { session = ConnectDB.getInstance(); Andamento andamento = (Andamento) session.createQuery ("from Andamento as andamento where codigo = "+"'"+codigo+"'").uniqueResult(); return andamento; }

vc pode atualizar e remover tb.

pode fazer uma busca de certos elementos do banco adicionando em um List caso fique melhor pra vc

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 3
Participantes 2