[resolvido] Modelar um BD de um software ja existente usando o bd "estático"

10 respostas
d34d_d3v1l

Gente,

acho que estou enrolado… Criei um software com um “BD” estático (uma classe bd com vetores estáticos do eu preciso guardar)… Isso por dois motivos:

  1. testar o software normalmente, imitando um BD
  2. ainda nao sei usar um bd … hehe

Mas de toda forma, eu to com uma dúvida cruel… Vejam só algumas coisas no meu “BD”:

public static Cliente[] clientes = new Cliente[10000];
    public static Fornecedor[] fornecedores = new Fornecedor[10000];
    public static Produto[] produtos = new Produto[10000];
    public static Mesa[] mesas = new Mesa[10];

Até ai tudo bem… ao inves de guardar em um vetores, vou guardar tudo em TABELAS do bd…
a minha duvida surge agora:

public static Jan_Gerenciar_Mesa[] jan = new Jan_Gerenciar_Mesa[10];
    public static Jan_Venda_Balcao[] bal = new Jan_Venda_Balcao[10000];
    public static int countMesas=0;
    public static int countBalcao=0;

eu também preciso guardar as minhas janelas de “Gerenciar Mesas”, que são JFrames !! Como é que vou fazer isso!!! Vou criar tabelas também? e vou ter que modificar a estrutura delas para receber como parametro as confiuurações de cada mesa? (Lembrando que o usuario nao pode incluir, excluir ou editar essas janelas… são fixas)…

Outra coisa, fiz um monte de bobeirinha no software que quando tem alguem sentado na mesa a bolinha fica vermelha e tal… como vou guarda isso? eeiita meu Deus, estou ficando preocupado … Será que vou dar conta?

10 Respostas

d34d_d3v1l

detalhe,

tava querendo usar um bd embutido, como o HSQLDB, e sei que o hibernate
vc pode guardar objetos… vou ler sobre ele um pouco para ter ideia,
mas gostaria de usr apenas o HSQLDB por exemplo…

abraços

ViniGodoy

Use um BD de verdade, como o HSQLDB. Gerar você mesmo os arquivos para gravar tudo será um grande trabalho.
Se não quiser usar o Hibernate, use diretamente o JDBC.

E você só salva dados, não as janelas em si.

d34d_d3v1l

Obrigado pela resposta…

Pois bem, eu quero usar apenas o HSQLDB, como eu disse no meu comentário, o problema é que
a “Janela” das mesas é que guardam os produtos e tal… Se acontecer um pique de luz ou algo assim,
vamos supor, tudo o que estava nas mesas seria ‘perdido’ e nao teria como o dono do bar saber…
(apesar de ja diminuir no estoque e ir para os relatorios),
então por isso que eu queria guarar as JFrames das mesas, por que elas contem as informações do que estão
sendo guardados =x

abraços!

ViniGodoy

O JFrame apenas exibe dados. Dados esses que estão em seus objetos de negócio, sua camada de model.
Os objetos dessa camada devem ser salvos.

Você terá no seu banco uma tabela para a Mesa, Cliente, Fornecedor, Produto, etc…

Sempre que alguém criar um Fornecedor na janela de fornecedores, você também irá criar um registro no banco de dados.

d34d_d3v1l
ViniGodoy:
O JFrame apenas exibe dados. Dados esses que estão em seus objetos de negócio, sua camada de model. Os objetos dessa camada devem ser salvos.

Você terá no seu banco uma tabela para a Mesa, Cliente, Fornecedor, Produto, etc...

Sempre que alguém criar um Fornecedor na janela de fornecedores, você também irá criar um registro no banco de dados.

Eu entendi que vai ter uma tabela para mesa.. mas veja atributos da classe Mesa:
public class Mesa {

    Produto[] prod = new Produto[10000];
    Produto aux;
    private double total;
    private int i,j,count=0;
    private static int numero_Mesa=0;

como vou guardar isso no bd ? "Produto[] prod"

tem outro detalhe, quando eu inicio a minha janela,
olha o que eu faço:

//criando as 10 mesas..
        combo_mesa.addItem("Selecione uma mesa...");

        int i;
        for (i = 0; i < 10; i++) {
            regra.Mesa mesa = new regra.Mesa(bd.countMesas);
            bd.mesas[bd.countMesas] = mesa;
            Jan_Gerenciar_Mesa janela = new Jan_Gerenciar_Mesa(mesa);
            bd.jan[bd.countMesas] = janela;
            combo_mesa.addItem("Mesa: " + mesa.getNum());
            bd.countMesas++;
        }
ViniGodoy

Você vai ter uma tabela chamada Produto, com a descrição do produto (nome, preço, etc).
E um tabela chamada ProdutoMesa.

A tabela ProdutoMesa terá o id do produto e o id da mesa.
Na hora de salvar aquele array, basta salvar esses ids.

ViniGodoy

Outra coisa… por que você está usando arrays estáticos, e não as collections (como o ArrayList)?

As collections crescem dinamicamente e tem vários métodos úteis. É bem melhor que manipular arrays primitivos.

d34d_d3v1l

Usei o 'array primitivo' por que a intensão de usá-lo seria pouco, tendo em vista que
que vou retirar todos esses arrays pelo "banco de dados" de verdade...

Entendi o que voce quis dizer...
Estou tentando adaptar o meu codigo para 'carregar' as mesas, ao inves de 'criar'
as mesas, ai quando eu fizer isso, eu poderei simplesmente substituir as instruções
pelo os comandos do BD... Logo logo posto o que eu estou fazendo,
é basicamente isso:

//criando as 10 mesas..
        combo_mesa.addItem("Selecione uma mesa...");

        int i;
        int j = 0;
        for (i = 0; i < 10; i++) {

            if(bd.mesas[i] == null){
                System.out.println("mesa nula!");
                regra.Mesa mesa = new regra.Mesa(i);
                bd.mesas[i] = mesa;
                Jan_Gerenciar_Mesa janela = new Jan_Gerenciar_Mesa(mesa);
                bd.jan[j] = janela;
                combo_mesa.addItem("Mesa: " + mesa.getNum());
                j++;
            }else{
                System.out.println("Mesa ja criada");
                 Jan_Gerenciar_Mesa janela = new Jan_Gerenciar_Mesa(bd.mesas[i]);
                bd.jan[j] = janela;
                combo_mesa.addItem("Mesa: " + bd.mesas[i].getNum());
                j++;

            }
d34d_d3v1l

uai… era para estar dando certo olha a saida:

mesa nula!
mesa nula!
Mesa ja criada
mesa nula!
mesa nula!
Mesa ja criada
mesa nula!
mesa nula!
mesa nula!
mesa nula!

Só que está ‘repetindo’ numeros de mesa
¬¬

d34d_d3v1l

Problema resolvido…

mas as duvidas sobre bd ainda continuam…

mas voltarei a falar sobre isso… quando eu começar a colocar a mao na massa

vlw vinny! obrigado

Criado 11 de fevereiro de 2011
Ultima resposta 12 de fev. de 2011
Respostas 10
Participantes 2