Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação I Persistência em Arquivos Joinvile Batista Junior UFGD - LPI 09 - Joinvile Batista Junior 22 Persistência em Arquivo : Serialização • um grafo de objetos apontados por um objeto raiz pode ser salvo em um arquivo e posteriormente recuperado – cada referência entre objetos é serializada em um inteiro para ser salva em arquivo – na recuperação cada inteiro é reconvertido em referência – para ser serializável a classe deve implementar Serializable – public class Cliente implements Serializable { ... } • método genérico de salvamento – recebe como parâmetros: objeto raiz e nome do arquivo • método genérico de recuperação – recebe como parâmetros: nome do arquivo – e devolve objeto raiz referenciando grafo de objetos lido do arquivo como resultado • para salvar conjuntos de objetos de uma aplicação – criar objeto da classe principal da aplicação referenciando os conjuntos que armazenam os objetos da aplicação UFGD - LPI 09 - Joinvile Batista Junior 33 Persistência em Arquivo : Serialização package persistência; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; UFGD - LPI 09 - Joinvile Batista Junior 44 Persistência em Arquivo : Serialização public class Serialização { public static void salvar (Object raiz, String nome_arquivo){ if (raizObject == null) return; try{ ObjectOutputStream output = new ObjectOutputStream (new FileOutputStream (nome_arquivo + ".bds")); output.writeObject(raiz); output.close(); } catch (Exception exceção) { System.out.println("Falha ao salvar no arquivo” + nome_arquivo + “.bds”); } } UFGD - LPI 09 - Joinvile Batista Junior 55 Persistência em Arquivo : Serialização public static Object recuperar (String nome_arquivo){ try{ ObjectInputStream input = new ObjectInputStream (new FileInputStream (nome_arquivo + ".bds")); Object raizObject = input.readObject(); return raizObject; } catch (Exception exceção){ System.output.println("Falha na recuperação do arquivo " + nome_arquivo + ".bds"); return null; } } } UFGD - LPI 09 - Joinvile Batista Junior 66 Salvando Conjuntos de Objetos da Aplicação • em outra classe da aplicação • exemplo para persistir objetos de Cliente e Filme da Videolocadora public static void salvarAplicação () { ArrayList objetos_aplicação = new ArrayList (); objetos_aplicação.add (Cliente.getAlunos()); objetos_aplicação.add (Filme.getFilmes()); Serialização.salvar (objetos_aplicação, “VideoLocadora"); } UFGD - LPI 09 - Joinvile Batista Junior 77 Recuperando Conjuntos de Objetos da Aplicação • em outra classe da aplicação • exemplo para recuperar objetos de Cliente e Filme da Videolocadora public static void recuperarAplicação () { ArrayList objetos_aplicação = (ArrayList) Serialização.recuperar ("VideoLocadora"); if (objetos_aplicação != null) { Cliente.setConjunto((ArrayList<Cliente>)objetos_aplicação.get(0)); Filme.setConjunto((ArrayList<Filme>)objetos_aplicação.get(1)); } } UFGD - LPI 09 - Joinvile Batista Junior 88 Exercícios - 09 • 9.1 – Crie uma classe Filme com: nome, diretor, ator_principal e atriz_principal. Idem para Diretor com: nome e ganhador_oscar. Idem para Ator com: nome, n_oscars. Na classe Principal: – utilize o método recuperarAplicação, da classe Serialização do pacote persistência, para recuperar os objetos do arquivo e atualizar as listas globais das classes do pacote entidade – se existir algum filme cadastrado • imprima os nomes dos filmes, diretores e atores e finalize – crie e insira nas listas globais das classes entidade • 3 diretores, 3 atores, 3 atrizes e 3 filmes – utilize o métodos salvarAplicação, da classe Serialização do pacote persistência, para salvar os objetos das listas globais das classes do pacote entidade em um arquivo
Compartilhar