Comment implémenter un aller retour à partir d'un schéma XML en utilisant Java avec une base de données


Quelle est la meilleure façon d'implémenter un aller-retour pour recevoir des fichiers XML et éventuellement persister les données dans une base de données en utilisant Java. Actuellement, j'ai:
1. Un schéma XML et des fichiers de données XML m'envoient
- le XSD est assez complexe et appartient à une partie externe, donc je ne peux pas le changer
2. Création des classes Java
- JAXB génère plus de 150 classes, malheureusement le schéma peut changer
- J'ai utilisé Maven POM pour automatiser le processus 3. Unmarshall l' Fichiers de données XML dans des objets Java (avec annotation JAXB)
- les données seraient affichées à l'utilisateur pour être manipulées
4. Conserver les objets Java dans un SGBDR (Oracle / MySQL)
- il semble que JDO soit la solution la plus appropriée
5. Exportation des données
- Les données peuvent être exportées à nouveau en XML ou Excel (par exemple)

Je ne trouve pas de moyen approprié d'ajouter des métadonnées ou des annotations JDO au code source Java (généré pendant le processus JAXB) pour m'assurer que je peux persister Les classes Java. Je travaille avec les technologies suivantes:
- Java, Maven, JAXB, JDO et JDBC

Je pense que DataNucleus serait le plus adapté car je pourrais devoir changer les banques de données (SGBDR / XML / Excel) souvent entre des environnements avec des destinations d'exportation différentes. Les deux seules autres technologies que je pourrais avoir besoin de considérer sont:
- Printemps et XDoclet

Un conseil ou un pointeur vers un tutoriel serait apprécié

Author: wacko, 2011-03-01

2 answers

Quelle est la meilleure façon de mettre en œuvre un aller-retour pour recevoir des fichiers XML et finalement persister les données dans un base de données utilisant Java.

Pour cela, j'utiliserais une combinaison de JAXB et JAXB. Remarque: Je dirige EclipseLink JAXB (MOXy), EclipseLink fournit également une excellente implémentation JPA .

Actuellement, j'ai:

1-Un schéma XML et des fichiers de données XML m'envoient

  • le XSD est assez complexe et appartient à une partie externe, donc je peux ne pas le changer

Option #1-Démarrer à partir du schéma XML

  • Si vous souhaitez démarrer à partir d'un schéma XML, vous pouvez utiliser le fichier de liaison externe de JAXB pour personnaliser la génération de classe selon vos besoins sans modifier le schéma XML tiers.

Option # 2-Commencer à partir des classes Java

2-Création des classes Java

  • JAXB génère plus de 150 classes, malheureusement le schéma peut changer
  • J'ai utilisé Maven POM pour automatiser le processus

Si le schéma XML change, vous pouvez toujours régénérer votre modèle ou annoter votre modèle si nécessaire pour gérer le modifications du schéma XML.

Vous pouvez trouver le projet HyperJAXB utile, car je crois qu'il générera des annotations JPA directement sur un modèle JAXB.

3-Décompresser les données XML fichiers dans des objets Java (avec JAXB annotation)

  • les données seraient affichées à l'utilisateur pour être manipulées

C'est juste une utilisation normale de JAXB. Pour un exemple voir:

4-Conserver les objets Java dans un SGBDR (Oracle / MySQL)

  • il semble que JDO soit la solution la plus appropriée

JPA est une autre alternative.

5 - Exportation des données

  • Les données peuvent être exportées à nouveau en XML ou Excel (par exemple)

Encore une fois c'est normal JAXB utilisation pour obtenir la sortie XML.

 1
Author: bdoughan, 2011-03-01 16:44:54

Stocker, dans une base de données, des instances d'objets Java générés par JAXB à partir d'un schéma XML en évolution n'a pas beaucoup de sens, À mon HUMBLE avis. Le but d'une base de données relationnelle est de stocker des données, dans une structure relationnelle bien définie, afin de pouvoir les interroger facilement.

Si tout ce que vous voulez est de pouvoir récupérer le document XML que vous avez reçu quelque temps auparavant, en l'état, stockez-le simplement en tant que clob dans une table ou dans le système de fichiers.

Si vous stockez les données dans la base de données de manière structurée est vraiment nécessaire, puis concevez d'abord votre schéma de base de données, puis concevez les classes JDO nécessaires pour mapper ce schéma de base de données et implémentez la logique métier nécessaire pour transformer vos objets JAXB en objets JDO afin de les stocker dans la base de données.

Mais je réfléchirais davantage aux fonctionnalités que vous souhaitez implémenter avant de penser aux technologies que vous souhaitez utiliser.

 0
Author: JB Nizet, 2011-03-01 08:17:12