Disseny de la persistència Serialització

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Advertisements

Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Práctica III: Java RMI con Serialización y Activation Framework
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Programación Interactiva Archivos Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
1 Persistencia en Java Agustín J. González ELO-329.
Programación Orientada a Objetos
Persistencia. Persistencia significa trascender en el tiempo y/o en el espacio Un ambiente orientado a objetos debe permitir que los objetos se persistan,
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen.
1 Streams y Persistencia en Java Agustín J. González ELO-329.
Primeros pasos en java. Definición de las librerías import java.applet.Applet; //cuando se crea un applet import java.awt.*; //importa todos los paquetes.
Un paseo por las nuevas funciones. Patrones de Diseño Por si no ha quedado claro, los Patrones de Diseño, son el esqueleto de las soluciones a problemas.
Archivos en Java Unidad III – Programación Orientada a Objetos en Java Programación I
Serialització i persistència
Persistencia y Serialización en Java con Archivos
Impress 3... Posa-hi un fons!
PROPORCIONALITAT 1 Funciona amb “clics”.
MÚLTIPLES I DIVISORS.
PREZI Primers passos Davinia Alfonsin 4rt C Info. Tecnològica
Ciències per al món contemporani
Ciències per al món contemporani
MÚLTIPLES I DIVISORS ESCOLA EL Cim- 6è de primària.
Presentació de la base de dades
Presentació de la base de dades
ENFISPO.
Writer 4... mira’t bé la pàgina
FORMES JURÍDIQUES D’EMPRESES
El mercat ELS NENS I NENES DE P-4.
UNITAT 1: Els nombres reals (I)
Creació d’un mapa personalitzat
En aquest tema veurem els apartats següents:
GESTIÓ PER PROCESSOS.
PubMed i el gestor de revistes del CRAI de la UB (servei SFX)
SISTEMA GESTOR D’EMPRESA D’EXCAVACIONS
1 Gasos: conceptes bàsics La velocitat de difusió dels gasos
Les Restriccions d’accés
Què hi ha a l'Univers?.
DIADA DE La pau i la no violència.
L’ajuda t’explica com connectar-te
Situacions Simuladores Preferencials (SSP)
3. TOTS SOM DIFERENTS..
Enginyeria del software II
Disseny de la persistència Serialització
Ruben Balada Tripiana Informática
Curs de Llenguatge Administratiu Valencià Juli Martínez Amorós
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Tema 5: Nombres naturals i enters
Introducció a la Programació Orientada a Objectes
Disseny de la persistència Introducció i mapping objecte/relacional
SCIENCE OF SYNTHESIS.
Disseny de la persistència Introducció i mapping objecte/relacional
Aplicacions web bàsiques Introducció a servlets i JSP
Estructurant les aplicacions MVC JSTL Struts
Streams y Persistencia en Java
1. El problema de l’origen del coneixement i la veritat
ERIC Manual d’ús.
El que cal saber sobre l’estafa del FLA
ESCOLA ANTONI TÀPIES- 5èB
Threads en Java David Gañán Jiménez.
Dipòsit Digital de la Universitat de Barcelona
La literatura i les matemàtiques van de la mà.
Curs de Llenguatge Administratiu Valencià Juli Martínez Amorós
Problemas de Strings boolean palindrome(String x) Ej: palindrome(“reconocer”)=true boolean alfabetico(String x) Ej: alfabetico(“hola”)=true,
MORFOLOGIA i SINTAXI PRONOMS RELATIUS i PRONOMS INTERROGATIUS
Estils i Plantilles Ms Word.
CIENCIES DE LA TERRA I EL MEDI AMBIENT 2n batxillerat
Jornada Tècnica per a Coordinadors d’informàtica CEE
Transcripción de la presentación:

Disseny de la persistència Serialització Toni Navarrete Enginyeria del Software II – UPF 2003

Serialització És la forma que té Java per fer permanents els objectes (per guardar-los) Serialització s’usa típicament en RMI per enviar objectes. També com a “persistència light” Les classes dels objectes que es vulguin fer persistents han d’implementar la interfície Serializable Aquesta interfície és buida package java.io; public interface Serializable { // no hi ha res aquí!! };

Serialització Què es guarda d’un objecte quan es serialitza? Tots els atributs que no siguin static (perquè són atributs de la classe i no de la instància) transient (indica que no s’ha de serialitzar). Per exemple, atributs que es poden calcular a partir d’altres atributs, atributs confidencials ... Encara que sigui private se serialitza (compte!) Referències a altres objectes... Es guarden els objectes referenciats i la seva referència Per poder-los recuperar cal que també siguin serialitzables (que la seva classe implementi Serializable)

Escriure un objecte en un Object Stream. Example: Serialització Escriure un objecte en un Object Stream. Example: FileOutputStream out = new FileOutputStream(“nomFitxer"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject(objecte); s.flush();

Recuperar un objecte des d’un Object Stream. Exemple Serialització Recuperar un objecte des d’un Object Stream. Exemple FileInputStream in = new FileInputStream("nomFitxer"); ObjectInputStream s = new ObjectInputStream(in); try { Color c = (Color)s.readObject(); System.out.println("R: " + c.R); System.out.println("G: " + c.G); System.out.println("B: " + c.B); } catch(ClassNotFoundException cnfe) { System.out.println("Excepció classe no definida"); }

Serialització. Un exemple complet import java.io.*; public class ColorRGB implements Serializable { int R,G,B; public ColorRGB(int R, int G, int B) { this.R = R; this.G = G; this.B = B; } void guardaObjecte() throws FileNotFoundException, IOException { FileOutputStream out = new FileOutputStream("ObjecteColor"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject(this); s.flush(); void recuperaObjecte() throws FileNotFoundException, IOException { FileInputStream in = new FileInputStream("ObjecteColor"); ObjectInputStream s = new ObjectInputStream(in); try { ColorRGB c = (ColorRGB)s.readObject(); System.out.println("R: " + c.R); System.out.println("G: " + c.G); System.out.println("B: " + c.B); } catch(ClassNotFoundException cnfe) { System.out.println("Excepció classe no definida"); public static void main(String[] args) { ColorRGB color = new ColorRGB(0,0,255); color.guardaObjecte(); color.recuperaObjecte(); } catch(Exception e) { System.out.println("Error d'E/S"); System.exit(0);

Serialització amb Externalizable Hi ha una altra inferfície que ens permet un major control de què se serialitza: Externalizable 2 mètodes per personalitzar el comportament quan se serialitza: public void writeExternal(ObjectOutput out) throws IOException Només es guarden els atributs que aquí s’especifiquin public void readExternal(ObjectInput in) throws IOException No llegeix tota la tira de bits emmagatzemats i recupera l’objecte Crida al constructor per defecte i recupera els atributs especificats aquí El constructor per defecte (buit) ha de ser públic Nota: L’ordre en que hem guardat els atributs determina l’ordre per recuperar-los

Serialització amb Externalizable. Un exemple complet import java.io.*; public class ColorRGB1 implements Externalizable { int R,G,B; public ColorRGB1() { } public ColorRGB1(int R, int G, int B) { this.R = R; this.G = G; this.B = B; } public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(R); out.writeInt(B); //si fos un tipus no primitiu (per exemple String o una classe pròpia de l’aplicació) es faria amb writeObject public void readExternal(ObjectInput in) throws IOException { R = in.readInt(); B = in.readInt(); //si fos un tipus no primitiu (per exemple String o una class pròpia de l’aplicació) es faria amb readObject public static void main(String[] args) throws IOException, FileNotFoundException, ClassNotFoundException{ ColorRGB1 color = new ColorRGB1(100,200,255); FileOutputStream out = new FileOutputStream("ObjecteColor"); ObjectOutputStream sout = new ObjectOutputStream(out); sout.writeObject(color); sout.close(); FileInputStream in = new FileInputStream("ObjecteColor"); ObjectInputStream sin = new ObjectInputStream(in); ColorRGB1 c = (ColorRGB1)sin.readObject(); System.out.println("R: "+ c.R); System.out.println("G: "+ c.G); System.out.println("B: "+ c.B); Serialització amb Externalizable. Un exemple complet

Avantatges i inconvenients de la serialització Avantantges: Estàndard en qualsevol ambient Java Fàcil d’utilitzar El model de dades és directament el de les classes (aprofita OO) Inconvenients: No té les característiques d’un gestor de BD robust Per exemple, índexs No és escalable