Criação de Classes

4 respostas
joseinfo

Galera, suponhamos que eu tenha as seguintes tabelas: cliente(id, nome), produto(id, descricao, preco), pedido(idPedido, idCliente, total), itens_pedido(idPedido, idProduto, quantidade).
Estou me perdendo um pouco para criar as classes. Alguém poderia me indicar a melhor forma de montar essas classes. A minha idéia principal seria criar como mostra o seguinte, avaliem se a idéia está muito errada fazendo o favor, e a minha principal dúvida é onde colocar a “quantidade” da tabela itens_pedido.
Aproveitando vai outra perguntinha, tem como eu mapear certinho isso com o hibernate.(óbvio q deve ter, mas como?)

class Cliente{  
  private Long id;  
  private String nome;  
  private List<Pedido> pedidos;  
  // getters e setters  
}  
  
class Produto{  
  private Long id;  
  private String descricao;  
  private double preco;  
  private List<Pedido> pedidos;  
  //getters e setters  
}
     
class Pedido{  
  private Long id;  
  private Cliente cliente;  
  private List<Produto> produtos;  
  private double total;  
}

Obrigado desde já a todos.

4 Respostas

ignacio83

Você pode criar uma classe para mapear essa tabela de relacionamento N para N (ItensPedidos) e mapear como relacionamentos Itens 1 para N -> ItensPedidos -> N para 1 Pedidos
Ou também pode utilizar a anotação @JoinTable.

Dê uma estudada aqui: http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/

Esse link é do Hibernate Annotations, cuidado que algumas anotações realmente só funcionam para o Hibernate, se um dia for usar JPA puro (EntityManager), algumas anotações podem não funcionar.

Informei esse link porque apesar de haver essas exceções gosto muito nas documentações do Hibernate.

rmarin

Coloque a quantidade em uma nova entidade (classe), que terá um produto e uma quantidade.

Algo assim:

class Item {    
    private Produto produto;    
    private Integer quantidade;
}

Na entidade Pedido não faça isso:

private List&lt;Produto&gt; produtos;

Faça isso:

private List&lt;Item&gt; itens;

Existem duas formas de fazer o mapeamento com hibernate, através de xml e por anotações. :thumbup:

sergiotaborda

quanto à quantidade a solução é a class Item , ItemPedido mas especificamente.
Mas o seu codigo mostra outros “erros”

Humm… tudo bem que vc quer saber os pedidos do cliente. vc quer fazer cliente.getPedidos(). Mas isso não implica em ter uma lista de pedidos na sua classe cliente. Até porque os pedidos vão sendo adicionados
depois que vc faz a leitura. Ou seja, vc tem que refazer a query que trás os pedidos. Enfim, vc precisa de um método getPedidos() mas não de um atributo pedidos.
O mesmo para pedidos por produto

class Cliente{  
  private Long id;  
  private String nome;  
 
  // getters e setters  

  public List<Pedidos> getPedidos(){
     // List implica em ordem. a padrão será a data do pedido
     return  Query.getPedidosParaClientePorData(this);
    // Query é apenas para explicar a ideia. 
    //O ponto é que neste método vc deve pesquisar quais são os pedidos deste cliente.
  }

  // outro exemplo lista de produtos que o cliente ja pediu
  public List<Produtos> getProdutosPedidos(){
     return  Query.getProdutosPedidosPorCliente(this);
// valem os mesmos comentários sobre Query que acima
  }
}
joseinfo

vlw galera, é q tinha pensando que um classe tipo ItensPedido não poderia existir em OO.

Vlw gelera denovo.

Criado 19 de setembro de 2007
Ultima resposta 24 de set. de 2007
Respostas 4
Participantes 4