[Resolvido]Dúvidas após implementar ABstractTableModel

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.

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.

[quote=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.
    [/quote]

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” ?

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

hm é verdade !

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

[quote=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 ?[/quote]

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.

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

Obrigado novamente.

[quote=guilherme.dio]Ainda bem, pq fazer um update de uma jTable com mil registros seria lento.

Obrigado novamente.[/quote]

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.

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

Obrigado novamente.[/quote]

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.[/quote]

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

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).

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