Limpa cache de um List
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
Curtidas 0
Respostas
Ronaldo Lanhellas
30/10/2014
Não entendi seu problema, por gentileza de mais detalhes.
GOSTEI 0
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
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
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
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
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
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
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
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