Limpa cache de um List

Java

30/10/2014

objetos do List não atualizar, somente depois que executa a aplicação novamente.

Metodos para carregar a lista de objetos

 public void preencherTabelaJuridica(String cliente) {
        clientes = new LinkedList<>();
        
        clientes = controle.getByNameJuridica(cliente);

        try {
            tbCliente.setModel(new MyTableModel(Cliente.class, clientes, tbCliente) {
                boolean[] canEdit = new boolean[]{
                    false
                };

                @Override
                public boolean isCellEditable(int rowIndex, int columnIndex) {

                    return false;
                }
            });
}



Metodo que carregar um table de acordo com o objeto do table selecionado

 private void addContaCliente() {
        tbCliente.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {
                try {
                     Cliente clienteSelecionado = new Cliente();
                     clienteSelecionado.setContasBancarias(new LinkedList<ContaBancaria>());
                    
                    if (tbCliente.getSelectedRow() >= 0) {
                        clienteSelecionado = clientes.get(tbCliente.getSelectedRow());
                        contas = clientes.get(tbCliente.getSelectedRow()).getContasBancarias();
                        tbContas.setModel(new MyTableModel(ContaBancaria.class, clienteSelecionado.getContasBancarias(), tbContas));
                    }

                } catch (Exception erro) {
                    System.out.println(erro);
                }
            }
        });
    }
John Lima

John Lima

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

30/10/2014

Não entendi seu problema, por gentileza de mais detalhes.
GOSTEI 0
John Lima

John Lima

30/10/2014

É o seguinte eu tenho 2 jTable uma é preenchido com uma lista de cliente e a outra com a lista de banco de um cliente, sendo assim, crie um método para gera uma lista de cliente e preencher o Jtable e também crie um método que é disparado ao clicar na linha do Jtable de cliente onde é eu preencho o outro Jtable com a lista de contas bancarias.

O que está acontecendo é o seguinte quando eu executo a aplicação e faço a pesquisa e retorno a lista de cliente com suas listas bancarias o jtables são preenchidos normalmente, porem se eu fizer uma inclusão de outra conta bancaria o sistema só preencher as contas que antes da inclusão, como se fosse preenchido pelo cache
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

30/10/2014

Perfeito, agora entendi. Como você está fazendo para persistir os dados no banco ? Usando algum framework com Hibernate, por exemplo ?
GOSTEI 0
John Lima

John Lima

30/10/2014

EU Estou usando o Hibernate, percebi que os dados obtidos estão vindo do cache pois alterei o valor no banco e fiz uma consulta e retornou o mesmo valor, percebendo isso fui no método e e dei um EntityManage.clear(), só que a ideia do cache é não está fazendo sempre a consulta no banco para não perder desempenho, se eu der um clear() sempre acho que irei perde desempenho ?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

30/10/2014

EU Estou usando o Hibernate, percebi que os dados obtidos estão vindo do cache pois alterei o valor no banco e fiz uma consulta e retornou o mesmo valor, percebendo isso fui no método e e dei um EntityManage.clear(), só que a ideia do cache é não está fazendo sempre a consulta no banco para não perder desempenho, se eu der um clear() sempre acho que irei perde desempenho ?


Vai perder o desempenho sim se ficar fazendo clear() direto. Você tem que repensar sobre a sua estrutura. Pois existem diversas formas de resolver seu problema, leia este artigo para ver se tem haver com seu problema: https://www.devmedia.com.br/entendendo-o-java-persistencecontext-extended-e-transient/30493
GOSTEI 0
John Lima

John Lima

30/10/2014

Boa tarde Ronaldo e obrigado pela indicação do artigo, eu inclusive já havia dado uma linda, sendo assim pensei em algumas soluções e não obtive sucesso no caso do .reflesh, mais apenas consigo fazer essa transação quando se trata apenas de um objeto especifico. e quando se trata de vários objeto não conseguir usar o reflesh
GOSTEI 0
John Lima

John Lima

30/10/2014

Ronaldo conseguir usando o reflesh sempre que adiciono uma conta para um cliente ao persistir os dados eu pego o cliente da conta persistida e do um reflesh quando eu refaço a consulta a minha lista já me retorna com o objeto já adcionado
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

30/10/2014

Ronaldo conseguir usando o reflesh sempre que adiciono uma conta para um cliente ao persistir os dados eu pego o cliente da conta persistida e do um reflesh quando eu refaço a consulta a minha lista já me retorna com o objeto já adcionado


Isso mesmo, ótimo que conseguiu.
GOSTEI 0
POSTAR