[Resolvido]Dúvidas após implementar ABstractTableModel

10 respostas
guilherme.dio

Boa noite a todos…recentemente implementei meu próprio AsbtracrTableModel, com a mesma estrutura do meu Banco de Dados, porém, estou com dúvidas sobre quando devo carregar os valores do Banco na JTable e quando devo salvar os valores modificados na JTable no Banco.

Para ser mais claro, eu não onde devo “mexer” para saber que o usuário modificou algo na JTable e modificar no banco, n sei quando devo carregar a JTable com os valores, seria qdo abrir o form, qdo ele pressionar algum botão, quando a aplicação iniciar…estou um pouco confuso quanto a estes procedimentos, ainda mais porque não sei que métodos do AsbtractTableModel utilizar no UPDATE,INSERT e SELECT.

10 Respostas

ViniGodoy

No fundo é quando vc quiser.

Eu geralmente faço o seguinte:

  • Carga da JTable: Quando o form abre;
  • Comandos de UPDATE, INSERT e DELETE: Não ficam no TableModel. Ficam no DAO, que é acessado pelo evento de botão. O TableModel não conhece o DAO.
guilherme.dio

ViniGodoy:
No fundo é quando vc quiser.

Eu geralmente faço o seguinte:

  • Carga da JTable: Quando o form abre;
  • Comandos de UPDATE, INSERT e DELETE: Não ficam no TableModel. Ficam no DAO, que é acessado pelo evento de botão. O TableModel não conhece o DAO.

Entendi, mas por exemplo, e se eu quisesse que no exato momento que o user modificasse um dado na JTable e apertasse enter, para fixar o valor na celula, isso fizesse um update , ao invés de possuir um botão “Salvar” ?

ViniGodoy

Para isso você pode capturar um evento do seu TableModel. Note que existe um TableModelListener.

guilherme.dio

hm é verdade !

Obrigado, vou inserir esse evento, porém, como vou saber qual dado o user modificou? ou devo fazer um update geral ?

ViniGodoy

guilherme.dio:
hm é verdade !

Obrigado, vou inserir esse evento, porém, como vou saber qual dado o user modificou? ou devo fazer um update geral ?

Essa informação está no evento. Eu geralmente pego apenas a linha em que o evento foi disparado e chamo o DAO para salvar o objeto daquela linha.

guilherme.dio

Ainda bem, pq fazer um update de uma jTable com mil registros seria lento.

Obrigado novamente.

Marky.Vasconcelos

guilherme.dio:
Ainda bem, pq fazer um update de uma jTable com mil registros seria lento.

Obrigado novamente.

Não seria não, se voce abrir uma Transaction, inserir todos os dados para update depois comitar vai ser tão rapido quanto fazer um unico update.

guilherme.dio

Marky.Vasconcelos:
guilherme.dio:
Ainda bem, pq fazer um update de uma jTable com mil registros seria lento.

Obrigado novamente.

Não seria não, se voce abrir uma Transaction, inserir todos os dados para update depois comitar vai ser tão rapido quanto fazer um unico update.

Hm… porém estou usando JDBC+DBCP Pool…existe como fazer essa “Transaction” com essas ferramentas? onde encontro material para estudar ?

Marky.Vasconcelos

Hmm… com JDBC diretamente não sei, acho que voce vai ter que criar uma SQL gigantesca em um for (use StringBuilder) e realizar todos os updates por lá (se existir uma SQL para isso).

guilherme.dio

é realmente seria o caminho mais difícil, acho que vou usar o parametro do evento, descobrir oque mudou, e fazer o update

Criado 23 de junho de 2011
Ultima resposta 24 de jun. de 2011
Respostas 10
Participantes 3