respuesta rápida: JAXB, JPA y primavera
Al insertar XML en una base de datos debe tener en cuenta qué operaciones desea realizar en los datos que el XML está representando.
Podría considerar, por ejemplo, el XML como datos de entrada y luego crear un esquema que contenga los datos de una manera fácil de consultar. Si eso es lo que le gustaría hacer, utilice JAXB como el unmarshaller porque puede generar fácilmente pojos/entidades anotadas adecuadamente desde el XSD a través de la herramienta xjc. Un poco de anotación JPA adicional y tendrás una solución rápida que correlaciona el XML con un esquema completo que permite una variedad de consultas de mezcla y coincidencia y vistas alternativas. Por supuesto, las anotaciones JAXB se pueden usar para generar una amplia variedad de formatos de salida (XML, JSON, YAML, etc.), por lo que no está limitado a XML cuando desea generar estos datos.
A continuación, podría considerar el XML como la entidad completa que desea almacenar. En ese caso, desea almacenarlo como CLOB o como XML (en Oracle).Oracle certainly supports búsquedas basadas en XPath para que tenga una buena oportunidad para consultar el conjunto de datos resultante.
Finalmente, si estás pensando que XML está demasiado saturado, y tienes el control de los cambios resultantes en los pojos, puedes serializar los pojos no etiquetados directamente en la base de datos como BLOB. Tendrás un esquema y una base de datos bastante compactos, pero sufrirás cuando se trate de consultas, ya que todo será binario. Y tendrá problemas de compatibilidad de versión binaria más adelante si tiene que deserializar un conjunto de datos muy antiguo basado en viejos pojos.
Por lo tanto, para resumir, JAXB es una muy buena forma de manejar los procesos de desasignación y clasificación posterior. Es simple y rápido (asintiendo con la cabeza a @Blaise Doughan aquí) muy bien soportado en SO por una cosa. JPA es la tecnología de elección para realizar sus operaciones de base de datos. Hibernate es uno de los implementadores de JPA (con buenas extensiones), y Spring lo admite maravillosamente a través de HibernateTemplate. Igualmente, puede usar Spring's JpaTemplate, que tiene, tal vez, una curva de aprendizaje ligeramente menos profunda.
¿Puedes elegir tu base de datos? Si es así, podría considerar exist-db, que es una popular base de datos XML de código abierto. – JasonPlutext