Como faço para armazenar informações na memoria?

2 respostas
P

Gostaria de saber se haveria alguma forma de guardar as informações que estão em uma collection na memória. Sei que a uma das formas possiveis é dentro de escopo de sessão. Infelizmente essa alternativa não é nem um pouco funcional, levando em conta que a sessão fica ativa até um determinado período de tempo. Outra alternativa seria armazenar as informações em arquivo texto. Mas existe o custo de performance devido ao I/O.
Considero isso necessário, pois existem ocasiões em que o usuário poderia manipular os dados na propria tela. Ele poderia inserir uma informação, e ela seria inserida no banco de dados. Ao invés de executar a query novamente para atualizar as informações da tela, a informação inserida seria adicionada na coleção. Neste caso só seria necessário atualizar a tela com um refresh para atualizar as informações.
O mesmo ocorreria em caso de exclusão. A informação seria excluída apenas do banco e da collection.
Será que haveria alguma forma de manter essas informações armazenadas na memória ?
Obrigado,

Marco Paradiso

2 Respostas

Pedrosa

Eu sugiro o uso de Ajax, vc atualiza as informações necessárias sem dar refresh na página inteira.

Tem um exemplo aqui de como guardar essas informações usando Map:

import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class Publico {
	
	private static Map pessoas = new LinkedHashMap();
	
	public static String addPessoa(Pessoa p) {
		if (pessoas.containsKey(p.getId())) {
			return "ERRO: Registro já existente";
		}
		
		pessoas.put(p.getId(), p);
		return new Date().toString();
	}
	
	public Pessoa getPessoaById(String id) {
		return (Pessoa)pessoas.get(id);
	}
	
	public static List getPessoas() {
		return new ArrayList(pessoas.values());
	}
	
	public static void edit(Pessoa p) {
		addPessoa(p);
	}
	
	public void remove(Pessoa p) {
		pessoas.remove(p.getId());
	}
}
P

Pedrosa,
O meu problema não é atualizar a página sem dar refresh… o problema é armazenar as informações na memória. Com isso, quando houver uma inserção, as informações inseridas serão armazenadas na collection e atualizadas no banco de dados.
O problema hoje é que, após uma inserção, existe uma necessidade de executar a query novamente para recuperar as informações atualizadas e armazenar estas informações na collection. Isso provoca um custo que considero desnecessário. Com o armazenamento em memória, não haveria mais este problema pq eu poderia inserir está informação na collection. Não havia perda de informações.

Criado 25 de abril de 2006
Ultima resposta 25 de abr. de 2006
Respostas 2
Participantes 2