1 Persistencia en Java Agustín J. González ELO-329.

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.
Curso de java básico (scjp)
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 Binarios. Introducción En clase ya vimos el uso de archivos de texto en Java, pero el uso de archivos es mucho más poderoso que eso, al utilizar.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Definición de Clases y Variables de referencia.
EXCEPCIONES UNIDAD 5.
“GUI para Conexiones y Transferencia de Datos Seguros”
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Programación Orientada a Objetos en Java
PROGRAMACIÓN ORIENTADA A OBJETOS
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.
Manejo de excepciones en Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Curso Programación en Java
Modificadores.
Lic. Rosemary Torrico Bascopé
Práctica III: Java RMI con Serialización y Activation Framework
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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.
Archivos y Búsqueda Secuencial
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
SCJP Sun Certified Programmer for Java 6
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
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
ESTRUCTURA DE DATOS EN JAVA
Entrada y Salida Java. Clase File La clase File proporciona mucha informacion relacionada con archivos y con la obtencion de informacion basica sobre.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Programación Orientada a Objetos
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Herramientas de polimorfismo y herencia en C++
Manejo de Punteros y objetos en memoria dinámica en C++
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.
1 Clase Properties Agustín J. González ELO Introducción En contraste con C++ que tiene una rica variedad de contenedores, Java contiene cuatro.
1 Streams y Persistencia en Java Agustín J. González ELO-329.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
1 Clase Properties Agustín J. González ELO Introducción Java contiene cuatro clases contenedoras en el paquete java.util: Vector, Stack, Hashtable,
1 Herencia Agustín J. González Versión original de Kip Irvine ELO320: Seminario II 2do. Sem 2001.
1 Interfaces y Clases Internas ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Arreglos de Objetos.
Detalles Generales sobre Java
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Interfaces y Clases Internas
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Instituto Tecnológico Superior de Libres Ingeniería en Sistemas Computacionales Segundo semestre Materia: Programación Orientada a Objetos Asesora: Ing.
1 Herencia Agustín J. González ELO padre hijo Como en biología, los niños heredan características de su padre Clasificación de Objetos En un intento.
Representación externa de datos y Serialización Marisol García Valls Arquitecturas Distribuidas 2º Ingeniero de Telecomunicación (Telemática) Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Persistencia y Serialización en Java con Archivos
Disseny de la persistència Serialització
Streams y Persistencia en Java
Transcripción de la presentación:

1 Persistencia en Java Agustín J. González ELO-329

2 Persistencia en Java Un objeto se dice persistente cuando es almacenado en un archivo u otro medio permanente. Un programa puede grabar objetos persistentes y luego recuperarlos en un tiempo posterior. A diferencia de C++ que sólo soporta persistencia a través de bibliotecas propietarias por lo cual su portabilidad y generalidad es limitada, Java se provee un mecanismo de serialización para almacenar objetos en disco. La serialización se obtiene llamando al método writeObject de la clase ObjectOutputStream para grabar el objeto, para recuperarlo llamamos al método readObject de la clase ObjectInputStream. La serialización además de persistencia, se puede usar para transferir objetos desde una máquina a otra a través de un socket (ELO330).

3 Interfaz Serializable Sólo objetos que implementen la interfaz Serializable pueden ser escritos a stream. La clase de cada objeto es codificada incluyendo el nombre de la clase y la firma de la clase (su prototipo) los valores de los sus campos y arreglos, y la clausura de cualquier otro objeto referenciado desde el objeto inicial. Para hacer que un objeto sea serializable, sólo debemos declarar que implementa la interfaz serializable. Nada más. No hay nétodos que debamos definir. Por razones de seguridad las clases no son serializable por defecto. Hay que tener claro el orden y tipo de los objetos almacenados en disco para recuperarlos en el mismo orden.

4 Ejemplo: Empleados serializables Class Employee implements Seralizable {....} Employee staff = new Employee[3];.... out.writeObject(staff); Luego podemos recuperar el objeto haciendo: Employee[] newStaff=(Employee[])in.readObject(); Sólo objetos pueden ser serializados con writeObject(). Veamos el ejemplo ObjectFileTest.javaObjectFileTest.java

5 Tratamiento de referencia a objetos Múltiples referencias a un único objeto son codificadas usando un mecanismo de referencias compartidas de modo que el “grafo” de objetos puede ser restaurado con la misma forma original. Los métodos writeObject y readObject se encargan de crear y almacenar un número de “serie” para cada objeto. De este modo objetos ya almacenados no son grabados nuevamente. Supongamos que dada mánager tiene una secretaria. Dos mánager podrían compartir la secretaria, en este caso tendriamos algo como: Si grabamos staff, no queremos tres secretarias luego sino algo equivalente a esta vista en memoria. staff Employee Name=“Eugenia” Manager Secretary= Manager Secretary=

6 Tratamiento de referencia a objetos Para ello Java utiliza el siguiente algoritmo para serializar (poner número de series). A todos los objetos grabados a discos se les asigna un número de serie. Antes de grabar un objeto a disco se ve si ya ha sido grabado. Si ya ha sido grabado, se graba “lo mismo que el objeto con número de series xxx” Sino, se almacena el objeto. Employee name=“Eugenia” Manager secretary= Manager secretary= En disco: Serial number=1 type=Employee name=“Eugenia” Serial number=2 type=Manager secretary=objeto 1 Serial number=3 type=Manager secretary=objeto 1

7 Mezcla de objetos serializables y datos básicos Podemos hacerlo por medio de los métodos writeInt, readInt, etc dado que ObjectOutputStream implementa la interfaz DataOutput. Análogo para la entrada. De datos. Ejemplo: para escribir un objeto, FileOutputStream ostream = new FileOutputStream("t.tmp"); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeInt(12345); p.writeObject("Today"); p.writeObject(new Date()); p.flush(); ostream.close(); La lectura se hace en forma análoga. FileInputStream istream = new FileInputStream("t.tmp"); ObjectInputStream p = new ObjectInputStream(istream); int i = p.readInt(); String today = (String)p.readObject(); Date date = (Date)p.readObject(); istream.close();

8 Cuando hay objetos no serializables Clases que requieren manejos especiales durante el proceso de serialización o deserialización deben implementar los métodos: private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException; private void writeObject(java.io.ObjectOutputStream stream) throws IOException Se aplica en casos que tengamos objetos que no sean serializables (aquellos que tienen algún dato no serializable) Por ejemplo Point2D.Double no es serializable en Java. Para que no reclame el compilador, definimos nuestro dato Point2D.Double como transiente (transient) y luego definimos los métodos indicados.

9 Cuando hay objetos no serializables Ejemplo: public class LabelPoint {.... Private String label; private transient Point2D.Double point; } Luego implementamos: private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); out.writeDouble(point.getX()); out.writeDouble(point.getY()); } private void readObject(ObjectInutStream in) throws IOException { in.defaultReadObject(); double x=in.readDouble(); double y=in.writeDouble(); point =new Point2D.Double(x,y); }