Duvida encapsulamento vs parametros de uma função

Galera, to com uma duvida que não quer calar. Vejam o código a seguir:

public class Cliente{
       public ResultSet function ConsultarCliente(int idcliente, String nome, String Bairro){

           .... conteudo
             return ResultSet da consulta;
       }
}

Entao… tenho essa consulta na classe Cliente mas nao uso nenhum atributo na classe cliente pois nao vejo necessidade.

Agora veja a seguir:

public class Cliente{
       private int id;
       private String nome;
       private String Bairro;
        
       // ai declaro os getters e setters dos atributos ( finge q ja tem todos )
       

       // Agora quando eu for fazer a consulta do cliente vem a duvida. Faço a consulta utilizando os atributos?
       // Ai me pergunto, pra q usar os atributos se posso passar os parametros?
       // Outra coisa, o resultado da consulta eu retorno o ResultSet ou jogo nos atributos como array?
       // to perguntando isso td pq n to vendo utilidade pros atributos, só ta me atrapalhando

       public ResultSet function ConsultarCliente(){
              this->id;
              this->nome;
              this->bairro;

 
           .... conteudo
             return ResultSet da consulta;
       }
}

Depende da arquitetura.

Você pode fazer consultas que passam o objeto Cliente com alguns atributos dentro dele, e retorna todos os clientes com esses atributos. Ou você pode fazer a consulta passando os parâmetro, que também te retornam os mesmos Clientes.

O problema da segunda solução é o número de métodos a serem escritos, pois buscarPorNome, buscarPorBairro e buscarPorNomeEBairro são três métodos diferentes. E, acredite em mim, isso cresce, e muito.

Quanto ao retorno, não se retorna ResultSet, mas sim o tipo do dado pesquisado, Cliente, ou uma Collection de Cliente, para retorno de mais de uma linha. Quando o retorno tem muitos tipos de dados, por exemplo, de Cliente, Bairro, Cidade, Produto, etc, uma boa solução é retornar Collection de Map, onde se guarda os dados em cada chave desse Map. É muito bom quando queremos preencher tabelas de dados.

Mais pra frente você verá que não vale a pena mexer com essa camada de persistência diretamente, a solução é usar frameworks que façam o trabalho, e o principal deles é o Hibernate. Ele resolve o problema das consultas(e inserções, alterações, etc) quase completamente.

po vlw mesmo cara! vo pesquisar sobre o hibernate.

Aprenda Java antes!

a duvida n era exatamente java em si, era + pra entender o porque dos atributos, to usando php.