Guardar archivo.xml en postgres con JPA

Hola amigos

Tengo una pregunta??

Como puedo guardar un archivo.xml en una base de datos postgres utilizando JPA??
Y posteriormente volver a leer el archivo.xml y presentar como reporte???
Espero me puedan ayudar

Saludos..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Puedes guardar el contenido

Puedes guardar el contenido del tu archivo en un string ( muy grande quizá ) y salvar y leer el string como cualquier otro string.

Imagen de neko069

O de plano como

O de plano como Blob....bueno, depende si necesitas guardar el archivo completo, o sólo su contenido...

Depende

Depende para que lo quieras y que necesites; parece que tienes tu mostrador de reporte base XML. Lo que puedes hacer es buscar los nodos por contenido/nombre y hacer de ese XML una representación en un objeto (y ya pues con JPA un persist()). Creo que hay utilerías que transforman de XML a objetos busca porque yo no me acuerdo de ninguna; te recomiendo jyaml si utilizas YML.

Imagen de ezamudio

clob

Una columna tipo CLOB (Character Large OBject, un poco distinto del BLOB porque maneja encoding). En PostgreSQL el tipo de dato se llama TEXT. Los CLOBs y BLOBs son un poco tediosos de manejar con JDBC, no sé si en JPA haya alguna facilidad adicional, pero por el tamaño del dato (porque potencialmente van a ser muy grandes) generalmente se manejan streams, no Strings.

O si sabes que los XML no van a pasar cierto tamaño, puedes usar VARCHAR, porque en PostgreSQL un VARCHAR puede medir hasta 10MB (10485760 caracteres). Al menos a partir de la versión 8 (yo lo probé en la 8.4.4). Y eso lo mapeas contra un vil String en tu entidad.

Yo estoy haciendo justo eso

Yo estoy haciendo justo eso ahorita (aunque no con JPA) pero mis archivos XML los guardo en un "bytea"

tambien funciona, en mi caso guardo diferentes tipos de archivos y no encontre el Blob ni Clob ni nada de esas cosas, lei en algunos lados que el bueno es el OID pero la verdad nunca me funciono y solo me guardaba numeritos... por eso escogí el bytea y cuando lo recibes lo almacenas en un byte[]

ah y para pasar de baits(byte[])a Document es rete facil:

        private Document documentXml;
        private byte[] byteXml;

        private void readFromByte ()
                        throws SAXException,
                                   ParserConfigurationException,
                                   IOException {

                ByteArrayInputStream bais = new ByteArrayInputStream (byteXml);
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
                DocumentBuilder db = dbf.newDocumentBuilder ();
                documentXml = db.parse (bais);
        }

Imagen de ezamudio

blob y clob

BLOB y CLOB son tipos de datos... digamos... conceptuales. Es como decir "cadenas", o "números de punto flotante", "enteros sin signo", etc. Algunas bases de datos tienen tipos de dato que directamente se llaman BLOB y CLOB. Otras tienen nombres distintos. En PostgreSQL el tipo de dato TEXT maneja los CLOBs y el tipo de dato BYTEA maneja los BLOBs.

Ooooraaale y yo que lo uso

Ooooraaale y yo que lo uso como texto plano XD

Gracias por sus respuestas

Es decir que no es necesario que en Postgres el campo en donde guardo el archivo debe ser de tipo xml???
y puede ser de tipo text ??

Imagen de ezamudio

jajaj no

Que yo sepa, no hay tipo XML en PostgreSQL. XML es texto.

Imagen de Nopalin

jajajajajajajajajajaja no

jajajajajajajajajajaja

no pude evitarlo, sobres

Imagen de francisco.santiagoj

Tipo de dato bytea

Que tal!, podrían ayudarme con un tema? necesito extraer datos de un campo bytea de postgreSQL y separar la información para poderla manipular, eh intentado de todo pero no logro extraer la información, el campo bytea contiene información texto y mas.

Re: no hay tipo XML

 

Sí/Ya existe

The xml data type can be used to store XML data. Its advantage over storing XML data in a text field is that it checks the input values for well-formedness, and there are support functions to perform type-safe operations on it; see Section 9.14. Use of this data type requires the installation to have been built with configure --with-libxml.

En 8.13. XML Type dentro de la PostgreSQL 9.4.4 Documentation.