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

Persistance des données Java Discussion :

Recuperer de facon automatique tout les entity classe d'un projet


Sujet :

Persistance des données Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut Recuperer de facon automatique tout les entity classe d'un projet
    Bonjour.J'aimerais récupéré de façon automatique la liste de tout les entity classe dans n'importe quel projet java.Comment faire?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Tu veux dire scanner les sources du projet ou récupérer ça à l'exécution?

    A l'exécution, tu peux le récupérer depuis l'entity manager:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.getEntityManagerFactory().getMetamodel().getEntities()

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Ok merci. J'ai reussi a le faire.
    Menant je veux recuperer le schema de n'importe qu'elle base de donnés en utilisant JPA .comment faire ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Je dirais que tu ne peux pas

    il faut le faire en sql (via éventuellement les native query jpa), mais les commandes sont il me semble différentes d'un sgbd à l'autre.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    En fait j'aimerais créer la structure de la table avec ca. Mais j'ai trouvé une autre methode (Persistence.generateSchema("Nom", null)) qui permet de le faire mais ça prend en parametre le nom de l'unite de persistance que j'ai défini par l'annotation @PeristenceContext(UnitName="example").

    Menant j'aimerais recuperer le nom de l’unité de persistance defini dans un projet dynamiquement par une methode. et la passer en parametre dans ma methode (Persistence.generateSchema("backupejbPU2", null)). Vous en avez une idée

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    au final c'est quoi le but, tu veux créer la base lors du démarrage? Si c'est ça, c'est déjà prévu dans les systèmes de persitence. Par exemple avec hibernate, tu mets hbm2ddl.auto à "CREATE" et si la base existe pas, elle sera créée.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Il s'agit d'un projet de sauvegarde et de restauration de base de données donc une libraire indépendant des base de données que je suis en train de faire.Menant j'ai sauvegarder les données dans un fichier xml. Normalement je dois mettre dans ce fichier aussi la structure de la base de données.
    Donc je veux faire un truc indépendant de l’implémentation de JPA .
    J'ai trouve que lors du démarrage si on met sur None la méthode Persistence.generateSchema("NomPersistance",null) peut créer ca.
    Menant je cherche a recuperer ce nom d’unité de persistance dans un projet

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par gatecyrille Voir le message
    Il s'agit d'un projet de sauvegarde et de restauration de base de données donc une libraire indépendant des base de données que je suis en train de faire.
    Donc JPA est une très mauvaise idée car JPA nécessite de connaitre à la compilation la structure de la base
    De plus, par expérience, explorer des données avec JPA pour les sauvegarder c'est facile, les restaurer avec JPA, je préfère encore me balader déguisé en bambou au milieu des pandas. Tu as tellement de choses dans JPA qui vont te pêter à la gueule...
    Citation Envoyé par gatecyrille Voir le message
    Menant j'ai sauvegarder les données dans un fichier xml. Normalement je dois mettre dans ce fichier aussi la structure de la base de données.
    sauf que JPA ne connait qu'un partie: les tables et les contraintes visibles. Il ne connait pas les trigger, il ne connait pas les index, il ne connait pas les procédures stockée, ...

    Donc je veux faire un truc indépendant de l’implémentation de JPA .
    Du sql quoi.
    J'ai trouve que lors du démarrage si on met sur None la méthode Persistence.generateSchema("NomPersistance",null) peut créer ca.
    Si on met quoi sur None? Ton EntityManager, il est liée à une base, d'office. Donc autant lui demander à son instanciation de créer la base comme mentionné.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Donc JPA est une très mauvaise idée car JPA nécessite de connaitre à la compilation la structure de la base
    De plus, par expérience, explorer des données avec JPA pour les sauvegarder c'est facile, les restaurer avec JPA, je préfère encore me balader déguisé en bambou au milieu des pandas. Tu as tellement de choses dans JPA qui vont te pêter à la gueule...
    Oui avec JPA on peut a la compilation a partir des classes entity defini dans le projet creer la structure de la base . Si seulement si On met Table Generation Strategie a Create (Creation de la base de données) ou Drop and Create(Suppression si il existe et creation) . Mais je pense que par defaut lors du deploiement de l'application c'est sur None (Ne rien faire) .
    Donc dans cet cas JPA ne creer la structure si la base de données. Donc cette méthode va me permettre de même si Table Generation Strategy n'est par defaut sur Create ou Create and Drope.

    Si on met quoi sur None? Ton EntityManager, il est liée à une base, d'office. Donc autant lui demander à son instanciation de créer la base comme mentionné.
    Comment demander a EntityManager a son instanciation de creer la base de données? je pense que on doit utiliser une methode.Puisque elle est lié a une unkite de persistance .Donc je veux recuperer ce nom afin par cette methode creer la base de données a son instanciation.

    Donc comment faire pour recuperer le nom de l'unite de persistance. Vous me comprenez

    J'ai trouve la classe PersistanceUtil qui a pour attribut UnitName qui est le nom mais je n'arrive pas a recuperer.

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par gatecyrille Voir le message
    Donc cette méthode va me permettre de même si Table Generation Strategy n'est par defaut sur Create ou Create and Drope.
    La question c'est poruquoi tu te complique la vie alors que tu l'a dit toit même, il suffit de mettre ce paramètre à create et la table sera créée au besoin
    De toutes façon, si le paramètre n'est pas à create et que les tables ne sont pas là, JPA ne démarrera pas donc pas d'entity manager il me semble.




    Citation Envoyé par gatecyrille Voir le message
    Comment demander a EntityManager a son instanciation de creer la base de données?
    En mettant le paramètre dans le fichier de config, comme tu l'a indiqué.


    J'ai trouve la classe PersistanceUtil qui a pour attribut UnitName qui est le nom mais je n'arrive pas a recuperer.
    Tu dois le connaitre et le mettre dans une fichier de config que tu lit au démarrage. Ou l'hardcoder dans ton code, c'est pas comme si tu allais changer ce nom en cours de projet.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/05/2007, 18h13
  2. Réponses: 10
    Dernier message: 10/12/2006, 17h26
  3. envoyer un formulaire automatiquement toutes les 3 seconde
    Par rom62 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/05/2006, 16h08
  4. Réponses: 2
    Dernier message: 10/04/2006, 11h18
  5. Réponses: 3
    Dernier message: 05/05/2004, 01h39

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