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

Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
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.
2.4 Construcción de un TAD a partir de otro.
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
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter N - 1 Capitulo 12 Archivos de Ingreso y Salida.
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
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
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.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Streams y Persistencia en Java Agustín J. González ELO-329.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors MULTITHREADING & JAVA SYNCHRONIZATION David.
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.
Detalles Generales sobre Java
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.
Manejo de Excepciones made by cristhian.. !!.  Errores que se pueden producir durante la ejecucion de una aplicacion y que podemos controlar o manejar.
Archivos en Java Unidad III – Programación Orientada a Objetos en Java Programación I
Java RMI. Entornos orientados a objetos  Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí.  Un programa.
Serialització i persistència
Persistencia y Serialización en Java con Archivos
Impress 3... Posa-hi un fons!
TFC – Aplicació web per gestionar tornejos d’escacs, amb tecnologia J2EE Alumne: Xavier Benet ETIG Consultor: Jose Juan Rodriguez Curs /1.
MÚLTIPLES I DIVISORS.
M.C Alejandro Castellanos Lopez
PREZI Primers passos Davinia Alfonsin 4rt C Info. Tecnològica
Ciències per al món contemporani
PRONOMS RELATIUS i PRONOMS INTERROGATIUS
MÚLTIPLES I DIVISORS ESCOLA EL Cim- 6è de primària.
Presentació de la base de dades
El mercat ELS NENS I NENES DE P-4.
Disseny de la persistència Hibernate i frameworks de persistència POJO
Library and Information Science Abstract
Una forma fàcil d'obtenir algunes fórmules
Les Restriccions d’accés
Com enllaçar des de PubMed al gestor de
L’ajuda t’explica com connectar-te
DIADA DE LA PAU A SJO.
Jonathan Ceballos Rodriguez ( ) Zenón Perisé Alía ( )
Optimització de consultes en MySQL (unes notes)
Disseny de la persistència Introducció i mapping objecte/relacional
Explicació de l’enunciat
SCIENCE OF SYNTHESIS.
Disseny de la persistència Introducció i mapping objecte/relacional
Aplicacions web bàsiques Introducció a servlets i JSP
Disseny de la persistència Serialització
Streams y Persistencia en Java
L’electricitat i el circuit elèctric
MORFOLOGIA i SINTAXI PRONOMS RELATIUS i PRONOMS INTERROGATIUS
ERIC Manual d’ús.
ESCOLA ANTONI TÀPIES- 5èB
String, random y stream en java
Threads en Java David Gañán Jiménez.
Explica amb detall com ho has fet per decidir el tros que pintes.
LA NOVA SELECTIVITAT I L’ACCÉS A LA UNIVERSITAT
La literatura i les matemàtiques van de la mà.
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.
Manejo de Excepciones y otros
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 2005

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