[quote=spwe]Como faço para ter uma inteface DAO e implementar ela ?
ex:
[code] public inteface DAO {
public void inserir (Object o) throws SQLException;
} [/code]
na minha classe ex :
[code]public class ALunoDAO implements DAO {
public void inserir (Aluno a ) { ... }
}[/code]
fica com erro ,[/quote]
Ficou com erro porque vc está declarando throws SQLException na interface. Logo tem que fazer o mesmo na implementação. Adicione throws SQLException no AlunoDAO para ficar igual à interface.
Depois crie um classe DAOException e substitua throws SQLException por throws DAOException
[quote=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 ;; [/quote]
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
[code]public class DAOException extends RuntimeException {
public DAOException (String cause){
super(cause);
}
public DAOException (Exception cause){
super(cause);
}
}[/code]
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:
[code]try {
// codigo que acessa SQL
} catch (SQLException e){
throw new DAOException(e.getMessage());
}
[/code]
Isto transforma todas as SQLException em DAOException. O uso de getMessage é porque SQLException não é serializavél em geral.