Interface dao

7 respostas
S
Como faço para ter uma inteface DAO e implementar ela ? ex:
public inteface DAO { 
          
                    public void inserir (Object o) throws SQLException;

}

na minha classe ex :

public class ALunoDAO implements DAO { 

                   public void inserir (Aluno a ) { ... } 

}

fica com erro ,,

7 Respostas

S

O erro é The type AlunoDAO must implement the inherited abstract method DAO.inserir()

Alguma dica?

P

vc msm respondeu a sua pergunta…

outra coisa, vc está abrindo topicos da mesma coisa (http://www.guj.com.br/posts/list/76082.java)
pq nao espera alguem responder.?!

sergiotaborda
spwe:
Como faço para ter uma inteface DAO e implementar ela ? ex:
public inteface DAO { 
          
                    public void inserir (Object o) throws SQLException;

}

na minha classe ex :

public class ALunoDAO implements DAO { 

                   public void inserir (Aluno a ) { ... } 

}

fica com erro ,,

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

S

Bom fiz isso, mas no main fica aparecendo um erro qdo instancio a classe DAO :
Unhandled exception type SQLException

e nao estou conseguindo resolver ;;

Marky.Vasconcelos

Sua interface DAO espera que você implemente um método com a assinatura

public void insere(Object e) throws SQLException

//E você implementa assim

public void insere(Aluno e) throws SQLException
Você não pode mudar o tipo dos parametros usados. Para fazer algo desse tipo você podia deixar sua classe DAO assim:
public inteface DAO<E> {   
             
                     public void inserir (E o) throws SQLException;  
   
 }

E na implementação

public class ALunoDAO implements DAO<Aluno> {   
   
                    public void inserir (Aluno a )  throws SQLException{
// ...
 }   
   
 }

Generics é uma solução

Alkamavo

e o metodo tem de retornar uma excepçao la no fim…

trow new exception…é um construtor…hihihihi

sergiotaborda
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.

Criado 1 de dezembro de 2007
Ultima resposta 3 de dez. de 2007
Respostas 7
Participantes 5