[Resolvido] O que posso fazer nesse caso

2 respostas
therodrigoagostin

Eis meu primeiro contato com interfaces, por favor, gostaria de saber se é possível fazer algo do tipo sem usar hibernate, ... ?
Está dando erro! Quando coloco throws SQLException ele da erro no Override, quando uso try catch não consigo colocar o return dentro, e quando coloco fora, retorna vazio. Obrigado.

public interface Estados {
    
    public List list();
    
}
public class EstadosDAO implements Estados {
    
    private DatabaseManager databaseManager = new DatabaseManager();

    @Override
    public List list() {
        List lista = new ArrayList();
        String sql = "SELECT estado_id, descricao FROM estados";
        try {
            ResultSet rs = databaseManager.getConexao().createStatement().executeQuery(sql);
            while (rs.next()) {
                lista.add(preencheLista(rs));
            }
            return lista;
        } catch (SQLException e) {
            
        }
    }

2 Respostas

therodrigoagostin

[quote=therodrigoagostin]Eis meu primeiro contato com interfaces, por favor, gostaria de saber se é possível fazer algo do tipo sem usar hibernate, ... ?
Está dando erro! Quando coloco throws SQLException ele da erro no Override, quando uso try catch não consigo colocar o return dentro, e quando coloco fora, retorna vazio. Obrigado.

public interface Estados {
    
    public List list();
    
}
Resolução:
public interface Estados {
    
    public List list() throws SQLException;
    
}
wagnerfrancisco

Como o amigo sugeriu no post anterior, você pode declarar na interface qual exceção disparar.

Neste caso em específico, entretanto, eu sugiro que você encapsule a SQLException em uma exceção não checada. Isto por que as implementações da interface Estados não precisam ser objetos que acessam banco de dados (não há pq vincular esta dependência). Veja:

public class EstadosDAO implements Estados {
    
   private DatabaseManager databaseManager = new DatabaseManager();

   @Override
   public List list() {
      List lista = new ArrayList();
      String sql = "SELECT estado_id, descricao FROM estados";
      try {
         ResultSet rs = databaseManager.getConexao().createStatement().executeQuery(sql);
         while (rs.next()) {
            lista.add(preencheLista(rs));
         }
         return lista;
      } catch (SQLException e) {
         throw new InvalidStateException(e); // ou uma excecao customizada      
      }
   }
}

E outra dica, você não precisa declarar que os métodos são públicos na interface, eles naturalmente são públicos:

public interface Estados {    
   List list();    
}
Criado 10 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 2
Participantes 2