Java

Preview:

DESCRIPTION

Java. Serialization. Il problema della persistenza. Persistenza dei dati quando l’applicazione non è running: salvataggio della struttura interna di un oggetto. E’ un problema ricorsivo! Serializzazione: trasformazione di oggetti in “stream di dati” (seriali). - PowerPoint PPT Presentation

Citation preview

Java

Serialization

Il problema della persistenza

Persistenza dei datiquando l’applicazione non è running:

salvataggio della struttura interna di un oggetto.

E’ un problema ricorsivo!

Serializzazione: trasformazione di oggetti in “stream di dati” (seriali).

Il JDK prevede delle API per la serializzazione,e la maggior parte delle sue classi sono serializzabili.

persistenza selettiva

Le variabili dichiarate

transient

non vengono serializzate.

Supporto di JDK alla persistenza

ObjectOutputStream: converte oggetti dalla rappresentazionein memoria a quella serializzata.ObjectInputStream: converte oggetti dalla rappresentazioneserializzata a quella in memoria.

Serializable: interfaccia senza metodi che marca una classecome seralizzabile.

Externalizable: interfaccia con metodi (sottoclasse di Serializable)che fornisce maggior controllo sul processo di serializzazione.

ObjectInputValidation: interfaccia per verificare la correttadecodifica di un oggetto.

Principali Metodi di ObjectOutputstream

ObjectOutputStream(OutputStream) costruttorewriteObject(Object) serializza Objectclose()flush()reset()writeInt(int) writeFloat(float) writeDouble(double)

Principali Metodi di ObjectInputstream

ObjectInputStream(InputStream) costruttoreObject readObject() deserializza Objectavailable() dice quanti bytes ci sono da leggereint readInt()float writeFloat() double writeDouble()

registerValidation(ObjectValidation,int)

Esempio –Writer 1/2

package serialDemo;import java.io.*;import java.util.*;

public class Writer {

HashMap hm=new HashMap(); public Writer() { System.out.println("WRITER-------------------------"); for (int k=1;k<=10;k+=2) { String key=new String("a"+k); Integer ik=new Integer(k); hm.put(key,ik); } System.out.println(hm.size()); Iterator i=hm.keySet().iterator(); while (i.hasNext()) { Object o=i.next(); System.out.println(o.toString()+" #"+hm.get(o).toString()); }

Esempio –Writer 2/2

FileOutputStream ofs=null; ObjectOutputStream oos=null; try { ofs=new FileOutputStream("serialiazidStream.txt"); oos=new ObjectOutputStream(ofs); oos.writeObject(hm); } catch (IOException ex) { ex.printStackTrace(); } }//--------------------------------------------- public static void main(String[] args) { Writer writer = new Writer(); }}

Esempio –Reader 1/2

package serialDemo;import java.io.*;import java.util.*;

public class Reader {

HashMap hm=null; //------------------------------------------ public static void main(String[] args) { Reader reader = new Reader(); }

Esempio –Reader 2/2

public Reader() { System.out.println("READER -------------------------"); FileInputStream ofs=null; ObjectInputStream oos=null; try { ofs=new FileInputStream("serialiazidStream.txt"); oos=new ObjectInputStream(ofs); hm=(HashMap)oos.readObject(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); }catch (IOException ex) { ex.printStackTrace(); } System.out.println(hm.size()); Iterator i=hm.keySet().iterator(); while (i.hasNext()) { Object o=i.next(); System.out.println(o.toString()+" #"+hm.get(o).toString()); } }

Recommended