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

Java EE Discussion :

[CMP] Modifier un champ d'une clé primaire [EJB2.1 Entity]


Sujet :

Java EE

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 35
    Points : 37
    Points
    37
    Par défaut [CMP] Modifier un champ d'une clé primaire
    Bonjour,

    J'ai des tables mappées sur des EJB CMP, chaque table à une clé primaire contituée de plusieurs champs.

    Le problème est qu'il est impossible de modifier les champs de la clé primaire via l'EJB. Pour modifier un champs de la clé primaire je suis obligé de supprimer l'enregistrement et de le réécrire à nouveau avec la nouvelle valeur.

    Mon patron me demande d'utiliser des séquences qui s'incrementent automatiquement et plus de problème, mais d'un autre coté il faudrait gérer les doublons à la main et se passer de l'interêt d'un clé primaire.

    Ya t-il une solution propre?

    Quelles sont les bonnes pratiques pour ce genre de problème?

    Merci pour vos réponses.


  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Utiliser des séquences pour les clefs dites "techniques".

    Utiliser un index unique sur l'ensemble des champs de ta clef primaire actuelle pour éviter les doublons.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Que veux-tu dire par clé technique?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Ce que l'on appel clef technique est un identifiant unique sur lequel les relations seront faites.
    Celà permet d'isoler les relation fonctionnelles des techniques.
    Pas besoin de faire de cascade update par exemple si tu fait une modification de la clé fonctionnelle "primaire" d'une table (Numéro d'un client par exemple).

    Celle clef a donc 2 fonctions :
    - Être l'identifiant unique de ta table.
    - Servir de clef pour les relations (FK).

    Ce qui est parfois genant, c'est de "lire" facilement les données dans sa base. Par exemple, trouver les facture d'un client impose une requete sur le client par son numéro pour en trouver la clef technique et ensuite seulement, faire une requete sur les factures avec cette clef technique et non le code client.

    En règle général, les clefs techniques sont des entiers long (sequence ou champ auto-incrémenté) ou encore des GUID. Personnelement, je préfère les GUID car celà évite les questions des clients à propos des "trous" dans la numérotation.

    Evidement, l'interface graphique ne doit JAMAIS faire apparaitre cette notion de clef technique.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Salut Alwin,

    Merci bcp pour tes conseils ça m'a été très utile.

    Le problème a été résolu grâce aux UUID générés par JBoss.


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

Discussions similaires

  1. [C#] Modifier le int d'une clé primaire dans un tableau VS database
    Par padodanle51 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/07/2006, 13h48
  2. Modifier des champs d'une table a partir du VB
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/07/2006, 14h58
  3. Réponses: 12
    Dernier message: 19/06/2006, 16h26
  4. Comment modifier un champ dans une table liée ?
    Par HookerSeven dans le forum Access
    Réponses: 11
    Dernier message: 05/02/2006, 23h50
  5. modifier les champs d'une table
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/10/2005, 15h22

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