Este é um post disponível para assinantes MVPSerialização e deserialização em Java - Revista Java Magazine 99 - Parte 2
Este artigo mostrou como serializar e deserializar objetos Java junto com as características e detalhes envolvidos nestas tarefas. As opções apresentadas são caracterizadas e analisadas de acordo com suas funcionalidades e desempenho.
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 99
Muitos desenvolvedores apresentam dúvidas quando é necessário considerar um local de persistência para objetos utilizados em Java, uma vez que esta persistência é necessária para manter o estado da aplicação, exportar e importar ou enviar e receber objetos através da rede.
Neste contexto, a primeira parte deste artigo focou na descrição e no detalhamento do que é serialização/deserialização e nas situações onde é necessário persistir dados em Java. Esta segunda parte destaca como foram desenvolvidas as classes utilizadas para comparar quantitativamente o tempo de execução necessário para a serialização/deserialização de objetos instanciados a partir de um POJO (Plain Old Java Object) que contém os principais tipos de dados básicos do Java. Por fim, é realizada uma análise com base nos dados obtidos através da execução destas classes.
Serialização e Deserialização binária
A serialização binária é o método mais tradicional para a persistência de objetos na plataforma Java. Esta abordagem utiliza um formato binário que só pode ser lido e gravado quando se utiliza o par de classes ObjectInputStrem e ObjectOutputStream em conjunto com as classes FileInputStream e FileOutputStream para ler e gravar os bytes do objeto em arquivos, respectivamente. A gravação e leitura trabalham com os dados em arquivos do sistema de arquivos do sistema operacional de acordo com o valor do quinto parâmetro passado para o método main() da classe ObjectSerDes.
A gravação de dados é implementada dentro do método saveObject(), que recebe o objeto a ser gravado e o local de armazenamento. Já a leitura é codificada no método loadObject(), que recebe apenas o local de armazenamento do arquivo e retorna um objeto genérico da classe Object. A Listagem 1 apresenta o conteúdo dos métodos saveObject() e loadObject(), que devem ser colocados dentro da classe ObjectSerDes.
Listagem 1. Conteúdo dos métodos saveObject() e loadObject() que fazem a serialização e deserialização binária, respectivamente.
// Serializa um objeto no formato binário em um
arquivo
// armazenado no local do segundo parâmetro
private static void
saveObject(Serializable object, String filename) throws IOException {
//
Criando o arquivo e o objeto da classe ObjectOutputStream
ObjectOutputStream objstream = new
ObjectOutputStream(new FileOutputStream(filename));
// O
método writeObject() automaticamente transforma o conteúdo do
//
objeto em bytes. Se a classe não implementar Serialize, um erro será gerado
objstream.writeObject(object);
//
Fechando o arquivo e salvando os dados
objstream.close();
}
// Deserializa o objeto armazenado no caminho
passado e retorna este
// objeto sem nenhum tipo de casting
private static Object
loadObject(String filename) throws ClassNotFoundException, IOException {
// Abre
o arquivo para a leitura
ObjectInputStream objstream = new
ObjectInputStream(new FileInputStream(filename));
// Lê os
bytes e cria o objeto na memória
"
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP
Space do autor



0
0
