DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Serializaçã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.






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
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Mauro Pichiliani

Mauro Pichiliani é bacharel em Ciência da Computação, Mestre em computação pelo ITA (Instituto Tecnológico de Aeronáutica) e possui a certificação MCDBA. Trabalha há mais de 7 anos utilizando diversos bancos de dados, como o SQL Server, Oracle e MySQL. Escreve regularmente para a revista SQL Magazin...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03