JDOM xml posible problema de tamaño en memoria?
Publicado por Felipe Rodriguez (6 intervenciones) el 30/12/2014 17:15:30
Hola, os cuento, a ver si me podéis explicar para tontos, estoy haciendo un respaldo a una base de datos que está hecha en MongoDb, como no tiene ninguna opción a través de java me estoy creando yo un xml de cada elemento de la base de datos.
Mi duda es si java almacena en memoria cada elemento hasta que se escribe a través del xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml")), porque si es así, ¿dependiendo del tamaño puede dar problemas no?
Gracias
Este es mi código:
table = db.getCollection("Pacientes");
BasicDBObject filtro = new BasicDBObject();
DBCursor cursor = table.find();
// Elementos para generar xml
Element Pacientes = new Element("Pacientes");
Document doc = new Document(Pacientes);
try {
while (cursor.hasNext()) {
DBObject cur = cursor.next();
String sName = (String)cur.get("Name");
String sFirstSecondName = (String)cur.get("FirstSecondName");
String sSecondSecondName = (String)cur.get("SecondSecondName");
String sDni = (String)cur.get("Dni");
String sBornDate = (String)cur.get("BornDate");
String sAdress = (String)cur.get("Adress");
String sPhoneFijo = (String)cur.get("PhoneFijo");
String sPhoneMovil = (String)cur.get("PhoneMovil");
String sDerivado = (String)cur.get("Derivado");
String sMotivoVisita = (String)cur.get("MotivoVisita");
String sComments = (String)cur.get("Comments");
Element Paciente = new Element("Paciente");
Paciente.addContent(new Element("Name").setText(sName));
Paciente.addContent(new Element("FirstSecondName").setText(sFirstSecondName));
Paciente.addContent(new Element("SecondSecondName").setText(sSecondSecondName));
Paciente.addContent(new Element("Dni").setText(sDni));
Paciente.addContent(new Element("BornDate").setText(sBornDate));
Paciente.addContent(new Element("Adress").setText(sAdress));
Paciente.addContent(new Element("PhoneFijo").setText(sPhoneFijo));
Paciente.addContent(new Element("PhoneMovil").setText(sPhoneMovil));
Paciente.addContent(new Element("Derivado").setText(sDerivado));
Paciente.addContent(new Element("MotivoVisita").setText(sMotivoVisita));
Paciente.addContent(new Element("Comments").setText(sComments));
doc.getRootElement().addContent(Paciente);
}
} finally {
try {
cursor.close();
mongoClient.close();
XMLOutputter xmlOutput = new XMLOutputter();
// display formato árbol
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml"));
} catch (IOException ex) {
Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
}
}
Mi duda es si java almacena en memoria cada elemento hasta que se escribe a través del xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml")), porque si es así, ¿dependiendo del tamaño puede dar problemas no?
Gracias
Este es mi código:
table = db.getCollection("Pacientes");
BasicDBObject filtro = new BasicDBObject();
DBCursor cursor = table.find();
// Elementos para generar xml
Element Pacientes = new Element("Pacientes");
Document doc = new Document(Pacientes);
try {
while (cursor.hasNext()) {
DBObject cur = cursor.next();
String sName = (String)cur.get("Name");
String sFirstSecondName = (String)cur.get("FirstSecondName");
String sSecondSecondName = (String)cur.get("SecondSecondName");
String sDni = (String)cur.get("Dni");
String sBornDate = (String)cur.get("BornDate");
String sAdress = (String)cur.get("Adress");
String sPhoneFijo = (String)cur.get("PhoneFijo");
String sPhoneMovil = (String)cur.get("PhoneMovil");
String sDerivado = (String)cur.get("Derivado");
String sMotivoVisita = (String)cur.get("MotivoVisita");
String sComments = (String)cur.get("Comments");
Element Paciente = new Element("Paciente");
Paciente.addContent(new Element("Name").setText(sName));
Paciente.addContent(new Element("FirstSecondName").setText(sFirstSecondName));
Paciente.addContent(new Element("SecondSecondName").setText(sSecondSecondName));
Paciente.addContent(new Element("Dni").setText(sDni));
Paciente.addContent(new Element("BornDate").setText(sBornDate));
Paciente.addContent(new Element("Adress").setText(sAdress));
Paciente.addContent(new Element("PhoneFijo").setText(sPhoneFijo));
Paciente.addContent(new Element("PhoneMovil").setText(sPhoneMovil));
Paciente.addContent(new Element("Derivado").setText(sDerivado));
Paciente.addContent(new Element("MotivoVisita").setText(sMotivoVisita));
Paciente.addContent(new Element("Comments").setText(sComments));
doc.getRootElement().addContent(Paciente);
}
} finally {
try {
cursor.close();
mongoClient.close();
XMLOutputter xmlOutput = new XMLOutputter();
// display formato árbol
xmlOutput.setFormat(Format.getPrettyFormat());
xmlOutput.output(doc, new FileWriter("MipruebaGenerada.xml"));
} catch (IOException ex) {
Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
}
}
Valora esta pregunta
0