La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Java Serialization. Il problema della persistenza Persistenza dei dati quando lapplicazione non è running: salvataggio della struttura interna di un oggetto.

Presentazioni simili


Presentazione sul tema: "Java Serialization. Il problema della persistenza Persistenza dei dati quando lapplicazione non è running: salvataggio della struttura interna di un oggetto."— Transcript della presentazione:

1 Java Serialization

2 Il problema della persistenza Persistenza dei dati quando lapplicazione 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.

3 persistenza selettiva Le variabili dichiarate transient non vengono serializzate.

4 Supporto di JDK alla persistenza ObjectOutputStream : converte oggetti dalla rappresentazione in memoria a quella serializzata. ObjectInputStream : converte oggetti dalla rappresentazione serializzata a quella in memoria. Serializable : interfaccia senza metodi che marca una classe come seralizzabile. Externalizable : interfaccia con metodi (sottoclasse di Serializable) che fornisce maggior controllo sul processo di serializzazione. ObjectInputValidation : interfaccia per verificare la corretta decodifica di un oggetto.

5 Principali Metodi di ObjectOutputstream ObjectOutputStream (OutputStream) costruttore writeObject (Object)serializza Object close () flush () reset () writeInt (int) writeFloat (float) writeDouble (double)

6 Principali Metodi di ObjectInputstream ObjectInputStream (InputStream) costruttore Object readObject ()deserializza Object available ()dice quanti bytes ci sono da leggere int readInt () float writeFloat () double writeDouble () registerValidation (ObjectValidation,int)

7 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()); }

8 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(); }

9 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(); }

10 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()); }


Scaricare ppt "Java Serialization. Il problema della persistenza Persistenza dei dati quando lapplicazione non è running: salvataggio della struttura interna di un oggetto."

Presentazioni simili


Annunci Google