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

JDBC Java Discussion :

Accès base de données Verrouillage enregistrements


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 64
    Points : 64
    Points
    64
    Par défaut Accès base de données Verrouillage enregistrements
    Bonjour,

    Je développe une application web (.war) interfacée avec une base de donnée DB2 sur un Iseries.
    Je fais des connexions via JDBC avec des requêtes SQL (statement, resulset...).
    Lorsque je remplis un objet graphique de formulaire HTML ou autre telle une table ou une treeview à partir des enregistrements d'une base avec une requête, je souhaite verrouiller les enregistrements du resulset afin d'empecher un mise à jour simultanée par différents clients sur les mêmes enregs, ce que l'on fait classiquement avec un CHAIN sur l'as400 en RPG pour ceux qui connaissent. Le premier qui verrouille dispose de la possibilité de mise à jour. Je ne souhaite pas faire un verrouillage logique d'enregistrement, c'est à dire toper l'enreg comme étant "tenu" à un instant T, cela ne peut être satisfaisant compte tenu des coupures intempestives sur un poste client liées à différents facteurs...

    Quelle est la technique couramment utilisée en java pour effectuer des verrouillages/déverouillages en java !
    Quelle est la méthode la plus optimisée pour une connexion DB2.
    la fonction java "synchronized" est-elle adaptée dans ce cas ?

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    si tu es en autocommit false et que les commit ne sont pas fait pendant la durée de la sesion, chaqye utilisateur accède de manière concurrente aux données sans que les changements des uns soit visibles par les autres.

    parc ontre au moment de la validation des changements, des incohérences peuvent surgir. Ce n'est donc peut etre pas le système que tu recherches.

    Mais ça revient quasi au même que d'utiliser synchronized, sauf que là les accès ne sont pas concurrents. C'est de l'exclusion mutuelle quoi. Il y a une attente bloquante pour pouvoir écrire/lire.

    Tu peux également utiliser un système de jetons (verrou)

    Par contre ce que je ne comprends c'est que tu ne veux pas de vérouillage logique. Par ce c'est de ça qu'il s'agit pourtant, non ?
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

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

    Informations forums :
    Inscription : Août 2006
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Merci de ta réponse, je complète :

    Une servlet fait une requête SQL (serveur) et extrait un nombre d'enregistrement via une méthode getInfo() sur une base de données DB2 afin d'alimenter un tableau HTML (client) dont les lignes sont en modification (saisie) . A ce moment il me semble indispensable de verrouiller les infos liées à la requete pour que le tableau en cours soit le seul à modifier les enregs.

    Je ne suis pas en autocommit(false) puisque je fais un close sur le resultset et le statement en fin de méthode getInfo().

    un bouton "enregistrer" sur le formuliaire me permet d'invoquer à nouveau la servlet et une méthode setinfo() afin de faire des update ou des insert.

    Mon besoin est de verrouiller la plage d'enregs en cours entre les 2 transactions.

    J'ai essayer de mettre la méthode getInfo() en synchronized pensant que cela allait locker le statement, çà n'est pas le cas, le synchronized ne locke que durant l'exècution de la transaction manifestement pas pour un temps définit

    Tu me parles de jeton , je ne connais pas !!

    Comment dois-je pratiquer ! as tu du code en exemple

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Ben sois tu gère avec les transactions au niveau de ta base de données. Ouverture d'une transaction, modif puis commit.

    Soit tu garde ton statement ouvert, avec concur_updatable à faux et là je pense que ton synchronized devrait fonctionner. En fait si tu synchronize un resultset que tu ferme en suite, c'est normal que la synchro s'arrete je pense ...

    Sinon pour l'histoire des jetons c'était juste en référence aux algos qui traitent du partage de ressources : tu limites le partage de la ressource à un nombre défini ... mais bon toi c'est plutot du problème des producteurs/consommateurs ... bref
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

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

Discussions similaires

  1. Accès Base de données Access
    Par vincent magnin dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/06/2006, 12h09
  2. Problème accès base de données
    Par alainconnu dans le forum Outils
    Réponses: 3
    Dernier message: 27/04/2006, 09h31
  3. [PHPMyAdmin] Accès base de donnée pour utilisateur
    Par nicodeme dans le forum Outils
    Réponses: 2
    Dernier message: 04/03/2006, 01h10
  4. [C#]Global.asax et accès base de données.
    Par R'SKaP dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/01/2006, 15h00
  5. [Kylix] Kylix et accès Base de données
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 22/06/2004, 16h41

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