2011-12-18 18 views
5

Necesidad: tome en XML y guarde los datos en la base de datos.Convierta XML a la base de datos con Java

Actualmente utiliza: JAXB para convertir el esquema XML en clases Java. Luego pretendo usar JPA para persistir los objetos organizados por JAXB.

Problema: Quiero algo para cerrar la brecha. Después de que JAXB genere las clases de Java, tengo que anotar manualmente todos los campos de java.util.Date con @Temporal; Tengo que poner @Entity en la parte superior de cada clase generada ... etc.

Me encontré con Hyperjaxb. Pero puedo encontrar poca documentación y no puedo hacer que funcione.

Estoy abierto a enfoques completamente diferentes. Parece que sería un problema común, así que tal vez haya una solución genérica.

Respuesta

1

Hyperjaxb hace exactamente lo que estamos tratando de lograr.Aquí está la documentación:

Aquí hay un tutorial para empezar:

+0

He estado buscando edades para un tutorial, muchas gracias. Voy a dar esto una oportunidad. – Kevin

+0

El servidor de confluencia se cayó ayer, es por eso que no encontré el tutorial. Gracias por el enlace, ya que hubiera renunciado a lo contrario. – Kevin

+0

Lo tengo trabajando, gracias. – Kevin

0

Puedo sugerir dos opciones: Opción 1. Defina sus tipos de entidad por separado, teniendo las anotaciones JPA relevantes, genere sus tipos JAXB a partir del esquema y, en tiempo de ejecución, correlacione uno con el otro. Si se trata de un mapeo simple, puede utilizar Apache BeanUtils para copiar los atributos de un bean a otro, si se trata de un mapeo más complejo, entonces puede usar un marco como dozer

Opción 2: Iniciar desde tipos de entidades , genere el esquema a partir de sus tipos de entidad o mantenga manualmente los tipos de entidad y el esquema en sincronización. Más como la opción que ha descrito, excepto que la fuente autorizada es el código de Java que el esquema.

+1

Gracias por su respuesta. Las clases son muy grandes, y creo que estas dos opciones me harán escribir mucho código que es muy similar al código generado automáticamente. Sin embargo, recurriré a algo como esto si no puedo encontrar otra solución. – Kevin

3

Nota: Soy el plomo EclipseLink JAXB (MOXy), y un miembro del grupo de expertos JAXB 2 (JSR-222).

Si ya tiene un esquema de base de datos existente, la que podría utilizar la herramienta de Dali en Eclipse (parte del Proyecto de Herramientas Web) para generar sus entidades JPA forman la base de datos:

JAXB es la configuración por excepción, esto significa que solo necesita agregar anotaciones donde desea anular el comportamiento predeterminado. Dalí también tiene herramientas para hacer más fácil añadir anotaciones JAXB:

entidades JPA a veces usan relaciones bidireccionales y claves compuestas, éstos pueden ser difíciles de asignar a XML. EclipseLink JAXB (moxy) contiene algunas extensiones para hacer esto más fácil (tenga en cuenta EclipseLink también ofrece una implementación JPA):

+0

upvoted para mencionar la configuración por excepción y claves, de lo contrario la dependencia de la herramienta no es la mejor manera de resolver el problema – necromancer

+1

He visto MOXy, pero parecía que solo era útil para ir: Base de datos-> Java-> XML y yo necesita XML-> Java-> Base de datos. Voy a tener otra mirada para asegurarme, gracias. – Kevin

+0

@Mowgli - MOXy como cualquier implementación JAXB (JSR-222) puede comenzar desde clases java o esquema XML. –

Cuestiones relacionadas