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 :

Mise à jour des tables


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Points : 554
    Points
    554
    Par défaut Mise à jour des tables
    Bonjour,

    Une question simple :

    En faisant abstraction du fait que je peux faire une colonne ID avec auto increment
    J'ai une entite simple avec Code (int),Nom(String) :

    le code est unique

    je déclare une named query dans mon entite comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @NamedQuery(name="update by code",query="update entite a set a.code = a.code +1 where a.code>=:code")
    dans une JForm j'ai un tableau qui affiche :

    code Nom
    1---->a
    2---->b
    3---->c

    je veux insérer un D avant le C

    J'exécute ma named query

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query q = em.createNamedQuery("update by code");
    q.setParameter("code", 3);
    q.executeUpdate();
    J'insère mon élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.persist(new entite(3,"d");
    le tableau se met à jour comme suit :

    code Nom
    1---->a
    2---->b
    3---->c
    3---->d


    la mise à jour a bien été faite car il n y a pas eu d'exception lors de l'insertion !!! si je ferme l'application et que je le réouvre j'ai

    code Nom
    1---->a
    2---->b
    4---->c
    3---->d


    la méthode ressemble à ça :

    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
     
     
    query = em.createNamedQuery("tout les elements de la table");
     
    updateJtableData(query);
     
    Query q = em.createNamedQuery("update by code");
     
    q.setParameter("code", 3);
     
    q.executeUpdate();
     
    em.persist(new entite(3,"d");
     
    query = em.createNamedQuery("tout les elements de la table");
     
    updateJtableData(query);

    Merci pour votre aide.


    Cdt.
    Mhamed
    Si on tombe un jour... c'est pour mieux se relever !!
    Take a look

    Mon début de carrière

  2. #2
    Membre confirmé
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Points : 554
    Points
    554
    Par défaut
    Bonjour,

    J'ai trouvé !

    En fait mon erreur c'est que c'est mon EntityManager que je preservait, je le crée une seule fois au début dans le main et je le faisait passer en paramètre dans toutes mes JForms.

    Mais je me suis rendu compte que c'est Le EntityManagerFactory qu'il fallait préserver et donc à chaque fois que j'avais des traitement à mettre dans la base je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    em.getTransaction.commit();
    em.close();

    et en suite si j'ai d'autre t'âches à faire dans d'autres JForms je crèe un nouveau em avec EntityManagerFactory, je commit et je close.


    Est ce que c'est comme ça les "BestPractice" ???


    Merci
    Si on tombe un jour... c'est pour mieux se relever !!
    Take a look

    Mon début de carrière

  3. #3
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Bonjour
    Citation Envoyé par mhamedbj Voir le message
    En fait mon erreur c'est que c'est mon EntityManager que je preservait, je le crée une seule fois au début dans le main et je le faisait passer en paramètre dans toutes mes JForms.
    Je faisais comme ça au début aussi, mais ça me créait beaucoup de problèmes après, notamment lors de la survenue d'une exception, et affectait du coup la gestion des autres objets de mon application.

    Seulement, j'ai constaté avec l'autre solution (création d'un EntityManager pour chaque opération dans la BDD) une impossibilité d'utiliser le LazyLoading, puisque l'EntityManager est fermé tout de suite après.
    Where is my mind

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour des tables dans Access
    Par Zabou dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/05/2008, 10h22
  2. problème de mise à jour des tables (10g)
    Par bad lieutenant dans le forum Administration
    Réponses: 7
    Dernier message: 26/04/2007, 17h21
  3. Réponses: 2
    Dernier message: 24/02/2007, 20h14
  4. Programmer la mise à jour des tables attachées
    Par _developpeur_ dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 20h29
  5. Mise à jour des tables liées + TIMESTAMP
    Par Homegrown dans le forum Access
    Réponses: 11
    Dernier message: 25/04/2005, 21h52

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