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

Hibernate Java Discussion :

[hibernate] gestion de la concurrence en écriture


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut [hibernate] gestion de la concurrence en écriture
    Bonjour,

    Je cherche la bonne stratégie pour gérer la concurrence d'accès en écriture.

    J'ai potentiellement plusieurs applications (dont j'ai la main dessus) qui peuvent accéder a une table en écriture.

    Au démarrage de chacune de ces applis, elles font une insertion en base de données avec hibernate. J'ai un generator de clé de type "max" donc il fait un select(max) puis il incrémente cette valeur.

    Evidemment il suffit que deux applis fassent le select au même moment pour que cela échoue ensuite lors de l'insertion avec une duplication de clé primaire.

    Je ne vois que deux choix actuellement :

    - je lock la table avant le select et l'insert (mais je ne sais pas comment le faire avec hibernate)
    - je gère l'exception de la contrainte unique et je recommence

    je suis sur une appli qui doit tourner sur oracle et sybase en production, et j'utilise mysql et derby en dev donc c'est pourquoi j'ai choisi ce type de generator (max) afin d'avoir une uniformité des comportements. Du coup, pas d'auto increment ou de séquence possible.

    Une autre idée ?

    je ne peux pas utiliser de séquence ora

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu ne peux utiliser les séquences Oracle, car tu n'as pas le droit, ou c'est juste pour que ton appli fonctionne en dev avec mysql ou derby ?

    Si c'était possible, j'utiliserais une séquence en prod, et generator identity en dev pour Mysql. Je ne sais pas si cela fonctionne également avec Derby.

    En tout cas, utiliser un max() est une bien mauvaise idée.

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Finalement je peux utiliser :

    <generator class="native">
    <param name="sequence">invocation_id_sequence</param>
    </generator>

    Qui permet sur oracle d'utilisation une séquence, sur sybase il va utiliser "native" qui est une sorte d'auto increment et ceci fonctionne aussi sur derby et mysql. Le param name sera tout simplement ignoré pour ceux n'utilisant pas de séquence.
    Effectivement, le select max n'était pas une très bonne idée.

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

Discussions similaires

  1. Gestion des accès concurrent
    Par nicoaix dans le forum Access
    Réponses: 3
    Dernier message: 06/07/2006, 15h54
  2. Gestion des accès concurrents à une table
    Par kodo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/06/2006, 14h05
  3. [Hibernate] Gestion d'acces concurrents
    Par K-Kaï dans le forum Hibernate
    Réponses: 9
    Dernier message: 01/06/2006, 16h08
  4. Réponses: 3
    Dernier message: 30/05/2006, 19h09
  5. [Hibernate] gestion de deux bases
    Par youdev dans le forum Hibernate
    Réponses: 3
    Dernier message: 04/05/2006, 15h50

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