Galera criei uma JTable que traz os dados do meu banco de dados, porém estou usando um FOR, adicionei 300 itens no banco e ele trouxe rápido, agora que adicionei 100 mil registros, claro que ele ficou lentíssimo, na verdade está demorando mais de 30 minutos para trazer a listagem.
Minha dúvida é saber se existe um FOR otimizado ou um substituto para o FOR, vi um pouco sobre o FOR EACH, se vocês tiverem uma dica, eu agradeço.
Para que você tem um for? Já usou um profiler para ver se o problema é aí mesmo?
J
Jingo
Blz ViniGodoy,
Isso mesmo estou usando um DefaultTableModel.
É possível não usar o for? Onde aprendo sobre profiler, tem aqui no GUJ?
E
entanglement
O seu conceito está errado.
Quando uma tabela é muito grande, ela não deve ser posta inteirinha dentro de um JTable. O correto é criar um JTable “virtual” onde você só pega os dados quando quer visualizá-los.
Acho que deve existir alguma coisa pronta com esse nome “virtual”, é questão de procurar.
J
Jingo
entanglement
Não entendi o que você quis dizer.
Estou usando um DefaultTableModel, pois acredito que ele faz esta virtualização que você disse.
Realmente quero que a tabela mostre apenas o resultado de uma “página” e quando usar a rolagem seja atualizada a visualização da tabela.
fabiofalci
Acho que o DefaultTableModel não faz essa tal virtualização, pelo menos nunca vi.
Agora, é válido trazer 100 mil registros? O usuário vai se achar? Não é melhor criar alguns filtros obrigatórios?
Uma alternativa é implementar uma espécie de paginação em swing, mas tb nunca vi, teria que fazer no braço.
E
entanglement
Vamos lá. Quanto tempo leva para você ler 100.000 registros do banco, sem fazer mais nada (ou seja, sem criar uma linha em um DefaultTableModel?)
ViniGodoy
O DefaultTableModel é uma das piores implementações de TableModel possíveis. Além de ser totalmente sincronizado, ainda exige a cópia dos dados da sua classe de negócios para dentro da tabela.
Mas, de qualquer jeito, a pergunta do colega ali é válida. Faz sentido listar 100.000 registros?
furutani
Olá
Traga os registros de pouco do banco de dados. Isso poupa a rede e economiza memória do micro do usuário.
rmendes08
Na empresa em que eu trabalho temos uma prática bem simples. Máximo de 500 registros por pesquisa. Ponto final!
Marky.Vasconcelos
Voce pode criar uma tela que tenha botões para avançar os registros de 10 em 10 e etc… trazendo os dados só quando for necessario apresentar na JTable.
J
Jingo
Então pessoal trazer os 100 mil é para testar o desempenho, trouxe 10 mil em menos de 1 segundo, só que aí você deve usar o JScroll para ver os dados que estão listados abaixo, vou ver se a paginação ou uma nova regra de filtro pode resolver o problema.