spwe:
Bom fiz isso, mas no main fica aparecendo um erro qdo instancio a classe DAO :
Unhandled exception type SQLException
e nao estou conseguindo resolver ;;
Vc não fez o que eu disse. Se tivesse feito apareceria "Unhandled exception type DAOException" ;)
SQLException é uma exceção verificado o que significa que vc é obrigdado a colocar a chamada a ela entre try/catch ou a repassar a exceção ao metodo chamador.
Para resolver isto vc cria um outro tido de exceção , a DAOException. Mas ela tb não deve ser verifiada logo tem que ser assim
public class DAOException extends RuntimeException {
public DAOException (String cause){
super(cause);
}
public DAOException (Exception cause){
super(cause);
}
}
e o seu codigo assim :
public inteface DAO {
public void inserir (Object o) throws DAOException;
}
Repare que o objetivo do DAO é desacoplar o SQL. Se vc continua enviando uma exceção SQL não está cumprindo objetivo.
É claro que quando invocar os métodos do SQL , conection, ResultSet etc.. eles vão exigir que trate um SQLException. Ai o que vc faz é isto:
try {
// codigo que acessa SQL
} catch (SQLException e){
throw new DAOException(e.getMessage());
}
Isto transforma todas as SQLException em DAOException. O uso de getMessage é porque SQLException não é serializavél em geral.