domingo, 13 de septiembre de 2009

Seralizando objetos en java

¡Qué tal!

En esta ocasión explicaremos detalladamente cómo serializar uno o varios objectos en java.

Primeramente hay que saber qué es serializar. Serializar objetos o datos, significa convertirlos en bytes, de tal manera que es más facil transferir la información desde la Invocación de Métodos Remotos, por ejemplo, o simplemente generar un fichero con los bytes correspondientes a nuestra información, con el fin de crear datos persistentes.

Para poder crear un objeto que tenga la capacidad de ser serializado, es fundamental que a la clase correspondiente le sea implementada la intefaz Serializable; veamos un pequeño ejemplo:


import java.io.Serializable

public class Persona implements Serializable
{
    private String nombre;
    private String apellidoPaterno;
    private String apellidoMaterno;
}

con esta instrucción, cualquier objeto creado a partir de esta clase, podrá ser serializado.

Naturalmente son necesarios los métodos para que nuestro objeto sea convertido en un fichero de bytes; partimos de tres clases importantes para la escritura en disco(en la aplicación), los cuales son:

En esta ocasión crearemos nuestro fichero a la "hardcode", es decir, de manera estática, posteriormente podríamos ver cómo hacerlo dinámico mediante la petición de la ruta al usuario, pero en esta ocasión nos dedicaremos a estudiar la creación del archivo directamente.

Comenzamos con "la receta": Creamos nuestro método wrietObject


public void writeObject(ObjectOutputStream oos, persona p)throws IOException
{
    oos.writeObject(persona);
}

En este método le hemos pasado un objeto de tipo ObjectOutputStream, quien es el encargado de darle salida y escribir en un fichero que contiene la información de al persona a guardar.

Ahora, procedemos a hacer "la inversa" al método anterior, ocupando 3 clases para la lectura de ficheros serializados (en la aplicación):

public Persona readObject(ObjectInputStream ois)throws IOException, ClassNotFoundException
{
    Persona p= (Persona) oos.readObject();
    return p;
}



En este último método se asume que la clase Persona tiene los típicos métodos viejos de java, los "setters" y los "getters", por lo que se crea una persona a partir de lo que se leyó del fichero. En el archivo de ejemplo viene más amplia la explicación de cada uno de los métodos utilizados, adem´s de que en la clase aplicación comprender´s de manera sencilla el uso de los métodos writeObject y readObject

Con ésto podemos crear nuestro objeto serializado, espero que haya sido lo suficientemente claro, si no es así, siéntete libre de enviarnos tu comentario o sugerencia a j.akexus@gmail.com


Descargar archivos de ejemplo aquí

0 comentarios: