Interface dao

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 ,

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

Alguma dica?

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.?!

[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

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

e nao estou conseguindo resolver ;;

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:

[code]
public inteface DAO {

                 public void inserir (E o) throws SQLException;  

}[/code]

E na implementação

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

Generics é uma solução

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

trow new exception…é um construtor…hihihihi

[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” :wink:

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.