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