[JTable/JComboBoxes] Carregar objetos apenas uma vez

3 respostas
F

Gente, eu percebi uma problema numa aplicaçãozinha aqui que tá diminuindo a performance. Pensei na solução, mas não sei aplicá-la.

Tenho uma tela de lançamentos que possui um panel com uma JTable e um panel com os campos para preencher e lançar.
Quando a abro, os lancamentos são trazidos do banco. E também são carregados automaticamente (FetchType) os objetos vinculados.

E depois eu carrego todos os objetos de cada classe nas comboBoxes (codigos, contas, obras etc.), e muitos deles - ou todos - já tinham vindo antes ao carregar os objetos da tabela. Portanto, carrego novamente objetos que já haviam sido trazidos do banco. Desnecessariamente.

http://img29.imageshack.us/img29/610/telab.png

Como eu faço pra não ter que carregá-los duas vezes?
Eu podia pegar a primeira lista, de lançamentos da tabela, fazer um for e ir preenchendo as comboBoxes, mas se eu cadastrar um novo código, por exemplo, a comboBox de código não terá esse novo código, pois não há nenhum lançamento feito com ele.


3 Respostas

ViniGodoy

Faça o TableModel, o ComboBoxModel e o ListModel compartilharem a mesma lista de objetos.

F

Ok, mas a questão da falta de elementos suficientes pra comboBox? Não seria resolvida…
A não ser que eu primeiro carregue todos os objetos das combos e exista uma forma de verificar se um objeto vinculado a um lançamento já foi carregado.
Exemplo: um lançamento se liga a um código “31”, e naturalmente o banco ia fazer o Fetch (lazy ou eager), mas como ele já foi carregado antes, ele é reaproveitado.

Viajei?

F

Ok, já reli a minha pergunta e a tua resposta… E continuo sem saber.

Será que é apenas isso mesmo?

Criado 1 de agosto de 2012
Ultima resposta 3 de ago. de 2012
Respostas 3
Participantes 2