Java - Duda Serialización

 
Vista:

Duda Serialización

Publicado por Federico (4 intervenciones) el 02/12/2004 23:22:53
Hola que tal,
tengo la siguiente duda:
yo tengo un programa donde tengo varias listas, de clientes, proveedores, productos, etc. Con 800 o 900 objetos por lista.
la duda es, ¿si serializo todo me enlentece el programa?
la otra duda, ¿como puedo guardar todo en una base de datos? (en caso que sea mejor que serializar).
Desde ya muchisimas gracias
saludos
fede
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda Serialización

Publicado por Pedro Castiñeiras (43 intervenciones) el 03/12/2004 00:19:49
Bueno yo sobre bases de datos no se, estoy preparandome en el tema en estos momentos y voy por el comienzo, pero con serializacion si he trabajado, para mi es una super potencia de java, no me canso de agradecerle a la SUN tan potente herramienta, fijate si es asi que microsoft la copio y tambien permite serializar en Visual Studio.
Sobre lentitud te dire que yo no me he topado con que sea lento, claro que todo depende de la cantidad de datos que serialices, te recomiendo que serialices en fichero separados por un orden si son muchos los datos que quieres guardar, ya que no lo he visto lento pero si hay muchos datos imagino que si demore algo porque tiene que leer todo el flujo de datos.
A continuacion te pongo como se serializa por si no sabes.
1 - Primero, las clases que definen el objeto que quieres serializar tienen que implementar la interface SERIALIZABLE.

2 - Segundo (codigo):
ObjectOutputStream myObjt = new ObjectOutputStream(new
FileOutputStream("mifichero.dat"));
myObjt.writeObject(aquiPongoElObjetoQueQuieroSerializar);
myObjt.close();

ObjectInputStream myObjt2 = new ObjectInputStream(new
FileInputStream("mifichero.dat"));
Integer i = (Integer) myObjt2.readObject();
myObjt2.close();

Ahi te puse como se escribe un objeto y como se lee, donde como imaginaras Output es salida y Input entrada, esta claro, si no lo entiendes dime para manana explicarte con mas detalles, en la parte de leer te puse como para leer un objeto de tipo Integer, claro que para ti pones el tipo que vallas a leer, fijate que hay un cast, porque lo que esta guardado es un Objet, y tienes que indicar que es de tu tipo, ok.

PD: te aconsejo que utilices el modificador TRANSIENT en tus clases para que disminuyas la cantidad de datos a serializar, para el caso que no sean innecesarios.
Saludos.......
Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda Serialización

Publicado por Federico (1 intervención) el 05/12/2004 12:50:40
Hola Pedro,
Gracias por tu ayuda, pero me quedo una duda, para que es el modificador TRANSIENT, que es lo que hace? y como se usa?
gracias de nuevo
salu2 !!
fede
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda Serialización

Publicado por Pedro Castiñeiras (43 intervenciones) el 05/12/2004 16:43:43
Me alegra haberte ayudado...
Bueno el modificador transient es para especificarle a la hora de Serializar que ese atributo no no serialice, te preguntaras para que sirve esto, bueno para que todas tus variables temporales no las meta a archivo, ya que eso es memoria innecesario, ademas del caso de las variables temporales esta el caso de las variables que no quieras serializar porque para ti no son importantes, como por ejemplo, que tengas una clase CPersona, y que quieras que cuando serialicen una instancia de ella que no se almacene el arreglo NOVIAS, valla eso para tirarle un cabo a la instancia, que pasaria, que cuando leas el objeto de fichero tendra ese atributo en null.
Espero te halla explicado bien...
Cualquier otro problema bueno avisa, ok
PD: Se me habia olvidado decirte que ademas que los atributos transient tampoco se serializan los que son staticos, ok.
Mis saludos............
Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar