1 / 10

Java

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).

Télécharger la présentation

Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Serialization

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

More Related