IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

[EJB3] Persistence XML


Sujet :

JPA Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [EJB3] Persistence XML
    Bonjour,

    Je souhaiterai pouvoir faire persister des EJB3 dans des fichiers xml et non dans une base de données.
    Il semblerait que je puisse utiliser les annotations JAXB avec celles de JPA. J'arrive à générer des fichier "po" avec JAXB, mais je ne sais pas comment utiliser les annotations JPA.

    Y a-t-il des exemples qui mettent en place ce mode de persistence ?

    J'ai regardé le projet Hyperjaxb (https://hyperjaxb3.dev.java.net) mais il n'est pas encore suffisamment abouti.

    Merci pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    ceci pourrait t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import javax.xml.bind.*;
    import javax.xml.bind.annotation.*;
     
     
    @XmlRootElement
    class Person {
     
    private int _id;
    private String _name;
     
    public Person(){}
     
    public Person(int id, String name){
    _id = id;
    _name = name;
    } //fin construct Person
     
    @XmlAttribute
    public int getId(){ return _id; }
    public void setId(int id){ _id = id; }
     
    @XmlAttribute
    public String getName(){ return _name; }
    public void setName(String name){ _name = name; }
    } //fin class Person
     
     
    public class Main {
     
    public static void main(String[] args) {
    try {
     
    // on crée un contexte JAXB pour la classe Person
    JAXBContext context = JAXBContext.newInstance(Person.class);
     
    // on crée un marshaller à partir du contexte
    Marshaller m = context.createMarshaller();
     
    // on veut un affichage formatté
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     
    // on demande au marshaller de générer le XML de la personne "serge"
    // et de l'afficher dans la console
    m.marshal(new Person(1, "serge"), System.out);
     
    } catch (JAXBException ex) {
    ex.printStackTrace();
    } //fin catch        
    } // fin main   
    } // fin class Main
    ceci crée du xml grace aux annotations, il te suffit alors au lieu de le faire afficher dans la console (System.out) de le faire enregistrer un fichier xml

    ha oui j'oubliais, il faut Java 6, car c'est tout chaud :-)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci !

    J'ai réussi à obtenir le résultat voulu.

    Mais j'ai tout de même une question qui chiffonne : n'existe-t-il pas un Persistence Provider qui assurerait une persistence dans un fichier xml et non dans une BDD ?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par nidaya
    Mais j'ai tout de même une question qui chiffonne : n'existe-t-il pas un Persistence Provider qui assurerait une persistence dans un fichier xml et non dans une BDD ?
    La "persistence API" a pour objectif les bases de données. Il n'y a qu'a voir des methodes comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query createNativeQuery(String sqlString)
      Create an instance of Query for executing a native SQL statement, e.g., for update or delete. 
      Parameters: sqlString - a native SQL query string
    On pourrait imaginer remplacer les query SQL par des query XPATH...

    Perso je crois plus a un Provider mixte, avec le stockage dans des fichiers XML et une indexation dans une base de données pour les query. J'y crois tellement que j'ai commencé a porter mon indexeur fait-maison sur cette API... Mais bon, y a bcp d'interface a implementer

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut annotation jaxb probleme d'ordre d'affichage des balises
    J'ai reussi à passer des classes java au fichier xml mais j'ai un problème d'affichage des balises. en effet les parametres du constructeur de chaque classe s'affichenet dans le xml par ordre decroissant d'arrivée dans le xml.
    par exemple si j'ai un constructeur EltRoot(string elt1, int elt2, EltParent elt3) et
    EltParent(string enfant1, string enfant2, string enfant3)

    jaxb me sort un xml du genre
    <eltRoot>
    <elt3>
    <enfant3>
    <enfant2>
    <enfant1>
    </elt3>
    <elt2/>
    <elt1/>

    voila existe t'il un moyen propre d'y remedier en dehors de mettre les paramèttres dans le constructeur de façon inversé?
    merci d'avance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    Désolé pour ne pas avoir répondu plus tot a ta question.

    Voici le moyen de choisir l'ordre de sortie en xml, il faut que dans ta classe où tu définis ton objet que tu désires mettre en xml placer cette annotation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @XmlType(propOrder={"name", "city"})
    @XmlAccessorOrder(AccessorOrder.ALPHABETICAL)
    public class xxxx {
     
    get xxx
    set xxx
    .....
    }
    en sachant que "name" et "city" sont des champs de ta classe, comme ceci le champ "name" sera avant le champ "city" dans ton xml.

    voilà j'espère t'avoir aidé...

Discussions similaires

  1. Problème: persistence.xml skipped
    Par Pschittt dans le forum JPA
    Réponses: 6
    Dernier message: 27/08/2010, 15h22
  2. Comment se passer de persistence.xml ?
    Par iceman dans le forum JPA
    Réponses: 1
    Dernier message: 08/08/2007, 14h55
  3. [JBoss 4][EJB3] persistance.units NOTYETINSTALLED
    Par Zero dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 01/02/2007, 09h26
  4. [CF][C#/VS2003]Comment utiliser format de persistance Xml?
    Par Dobyan08 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 03/03/2006, 14h11
  5. Persistance xml
    Par safazz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/12/2005, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo