J'ai une charge de fichiers XML et un XSD pour eux. P>
J'aimerais simplement convertir ensuite en Pojo et les insérer dans une base de données. Le schéma DB est sous mon contrôle, il peut donc être ce que j'aime jamais. P>
J'ai regardé autour d'une charge d'API, mais j'ai voulu une autre opinion ce qui fonctionne mieux. P>
L'hibernate a-t-il une API pour créer Pojo d'un XSD, puis lisez le XML dans ces pojos, puis insérez les données dans la base de données? P>
ou le ressort a-t-il des fonctionnalités pour aider avec cela? P>
Je suppose que je suis juste après votre point de vue, il suffit d'une API que j'ai manquée qui va aider à faire ce que je veux. P>
merci Jeff Porter P>
3 Réponses :
Une approche commune serait d'utiliser JPA (c'est-à-dire Eclipselink ou hibernate) pour stocker les objets dans le base de données et jaxb (c'est-à-dire métro, http://wiki.eclipse.org/eclipselink/examples/moxy/jpa < / a> li> ul>
ou vous pouvez contourner l'étape de traduire en pojos et stocker le XML directement comme un clob. Cela permettra "de taper de canard" plus tard, que vous pourriez trouver avantageux. P>
La cartographie de Java Pojos a du sens si vous devez interroger pour ces objets individuellement plus tard. Si vous avez besoin du flux entier, tout le temps, sans jamais avoir à interroger les valeurs dans le XML (par exemple, XPath), alors je dirais que le stockage de XML comme un clob a plus de sens. P>
+1: Je ferais cela, plus extraire des champs sélectionnés et les stocker comme des colonnes extra indexées i> de sorte que je puisse faire des recherches à grande vitesse plus tard. Les bons champs à extraire dépendront des types de requêtes qui vont être recherchées, bien sûr.
Réponse rapide: Jaxb, JPA et Spring Strong> P>
Lorsque vous insérez XML dans une base de données, vous devez déterminer quelles opérations vous souhaitez effectuer sur les données que le XML représente. p>
Vous pouvez, par exemple, considérez que le XML soit les données d'entrée, puis créer un schéma qui contient les données de manière facilement requérissant. Si c'est ce que vous souhaitez faire, utilisez JAXB comme un Mobilehaller, car vous pouvez facilement générer des pojos / entités annotées convenablement à partir du XSD via l'outil XJC. Un peu de JPA supplémentaire annotant et vous aurez une solution rapide qui mappe le XML à un schéma complet qui permet une variété de requêtes de mélange et de correspondance et de vues alternatives. Bien entendu, les annotations JAXB peuvent être utilisées pour générer une grande variété de formats de sortie (XML, JSON, YAML, etc.), de sorte que vous n'êtes pas limité à XML lorsque vous souhaitez générer ces données. p>
Ensuite, vous pouvez considérer que le XML soit l'entité complète que vous souhaitez stocker. Dans ce cas, vous souhaitez la stocker soit comme un clob ou comme xml (en oracle). Oracle prend certainement en charge les recherches basées sur XPath Donc, vous auriez une bonne occasion d'interroger le jeu de données résultant. P>
Enfin, si vous pensez que XML est trop ballonné et que vous maîtrisez toutes les modifications résultantes des pojos, vous pouvez sérialiser les pojos à la mode directement dans la base de données en tant que blobs. Vous aurez un schéma et une base de données assez compacts, mais vous subirez quand il s'agit d'interroger car tout va être binaire. Et vous aurez des problèmes de compatibilité de version binaire plus tard si vous devez désérialiser un très ancien jeu de données basé sur de vieux pojos. P>
Ainsi, pour résumer, JAXB est un très bon moyen de gérer les processus de marshalling et plus tard. C'est rapide et simple et (hoche la tête à @blaise doughan ici) très bien soutenu sur ce que vous pouvez également être une chose. JPA est la technologie de choix pour effectuer vos opérations de base de données. Hibernate est un agent de mise en œuvre de JPA (avec de bonnes extensions) et le printemps le supporte magnifiquement à travers le hibernatetemplate. De même, vous pouvez utiliser Jpatemplate de Spring qui a peut-être une courbe d'apprentissage légèrement moins profonde. P>
Pouvez-vous choisir votre base de données? Si tel est le cas, vous pouvez envisager Exist-dB, une base de données XML open source populaire.