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 :

Transaction initialiser clé tables détail avec valeur autoincrémentée table maitre


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut Transaction initialiser clé tables détail avec valeur autoincrémentée table maitre
    Bonjour,

    J'aimerais valider dans une transaction l'ensemble de mes entités (1 maitre + x détail).
    Seulement la clé de mes détails est : Id Maitre (autoincrementé) + n° ligne.
    Actuellement, je suis obligé de valider l'entité maitre dans un premier temps pour pouuvoir récuperer l'id et ensuite lancer une deuxieme transaction pour valider mes détails.
    Pouvez-me dire comment faire pour avoir qu'une seule transaction ?
    Wilfreed Legras

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    ben tu abandonnes ta composition de clé pour les détails, c'est une mauvaise idée.
    De plus s'il s'agit de "détails" du "maitre", il y a probablement une "clé étrangère" côté "détail", non ?
    Bon mais ça ne règle pas l'autoincrémenté..........abandonnes l'autoincrémenté, c'est tout simple et gères toi-même les id.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse et.. c'est bien ce que je craignais !

    J'ai une très vieille base de données et donc avant de faire de la persistance (JPA dans mon cas), il faut revoir le modèle.

    La clé composée sur la table détail à tout de même des avantages :
    -Pas besoin d'ajouter un index sur la FK
    -possibilité de gérer un ordonancement des lignes

    Et au niveau de l'autoincrementation : l'abandonner j'ai l'impression de revenir 10 ans en arrière et devoir gerer les accès concurentiels alors que la base le fait très bien sans moi

    D'autres astuces pour enregistrer des entités maitre/détail dans une seule transaction ?
    Wilfreed Legras

  4. #4
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    ben sauf que tu n'y arrives pas à faire ton truc, non ?
    Donc il faut bien changer qq chose. Si tu gardes le truc autoincrémenté, il faut faire l'insert en 2 fois, une fois pour ton maitre, tu récupères l'id et tu crées les détails.
    Mais c'est quoi ta base ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2002
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Pas terrible les 2 transaction niveau perf et data.
    Si j'ai une erreur dans la 2eime transaction, il faut gerer un rollback manuellement sur la 1ere transaction...
    Au niveau de la BDD, c'est une base déployé il y a environ 15 ans et ce n'est pas eu programme de modifier sa modelisation car il y a de nombreux sites.
    En gros dans mon cas, j'ai une table facture entete et facture ligne.
    La clé de facture entete est un id
    En facture ligne, j'ai l'id de l'entete + n° de ligne (il faut garder l'ordonnancement)
    il s'agit juste de changer de technologie pour les nouveaux programmes (c'était en Delphi avant), donc on pensait partir sur du Java/JPA mais y a p'tre mieux ?
    Wilfreed Legras

  6. #6
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Pas 2 transaction, une seule dans laquelle tu fais plusieurs requêtes. Il ne faut pas confondre transaction et requête

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/11/2009, 10h36
  2. Tri de la table détail avec Interbase
    Par helmis dans le forum Bases de données
    Réponses: 1
    Dernier message: 10/05/2008, 01h41
  3. Champs dans une table Access avec valeurs #00
    Par Stool dans le forum Bases de données
    Réponses: 0
    Dernier message: 23/04/2008, 16h12
  4. mise a jour d'une table paradox avec une autre table sous delphi
    Par bobo2005 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/01/2007, 21h07
  5. Réponses: 2
    Dernier message: 28/07/2006, 14h48

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