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..
- Inicie sesión o regístrese para enviar comentarios
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.
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.
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:
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 ??
jajaj no
Que yo sepa, no hay tipo XML en PostgreSQL. XML es texto.
jajajajajajajajajajaja no
jajajajajajajajajajaja
no pude evitarlo, sobres
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
En 8.13. XML Type dentro de la PostgreSQL 9.4.4 Documentation.