Dúvida em relacionamento de tabelas

2 respostas
F

Olá pessoal estou com a seguinte dúvida!
Qual a melhor maneira de fazer um relacionamento entre duas classes? Eu implementei uma solução mas gostaria da opinião de alguém mais experiente. Segue:

Estou criando uma arquitetura composta de DAO e VO tenho duas classes relacionadas tal como Cidade -> UF (1…1)

Tenho as classes CidadeDAO e UFDAO nestas duas tenhos métodos C.R.U.D. e um método de pesquisa onde passo os parâmetros para qualquer pesquisa

Em Cidade criei uma referencia para UF e na tabela respectiva a Cidade criei uma FK para a tabela UF (uf_o_id)

Minha dúvida principal é a seguinte, existe alguma forma que eu não crie um atributo uf_o_id em Cidade?

Sei que no Hibernate isto é feito no mapeamento das tabelas pelo hbm mas eu estou utilizando JDBC acessando MySql

Desde já agradeço

2 Respostas

J

Isso que você quer?

public class Cidade{
   private int id;
   private String nome;
   private UF uf;
   //getters & setters
}

public class UF{
   private String sigla;
   private String nome;
   //getters & setters
}
F

Olá Jair
Na verdade eu implementei isso mas na classe Cidade eu inclui um atributo uf_id para fazer referencia a FK da tabela UF além da refencia da própria classe UF

public class Cidade{ 
   private int id; 
   private String nome; 
   private uf_id  
   private UF uf; 
   //getters & setters 
}

E aí no meu método getUF e buscaria o registro correspondente a UF relacionada à cidade desta forma:

public UF getUf(){
        DAOFactoryGeral daoFactory;
        try {
            daoFactory = DAOFactoryGeral.getDAOFactory();
            UFDAO ufDAO = daoFactory.createUFDAO();
            if (uf.getO_id()!= this.getUf_o_id()) {
                uf.setO_id(this.getUf_o_id());
                List<UF> ufList =
                        ufDAO.SearchByCriterio(ufDAO.getAllFields(), uf, null);
                this.setUf((UF)ufList.iterator().next());
            }
        } catch (PersistanceException ex) {
            ex.printStackTrace();
        }
        
        return uf;
    }

Teria outra forma de fazer isso pois eu quero guando fizer isso Cidade.geUf().getSigla() me traga a sigla da uf relacionada com a cidade.

Isso está funcionando mas gostaria de saber se existe outra forma de fazer

Obrigado

[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - marcossousa[/color][/size] :joia:

Criado 17 de maio de 2006
Ultima resposta 17 de mai. de 2006
Respostas 2
Participantes 2