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 :

Utilité d'une transaction en lecture


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut Utilité d'une transaction en lecture
    Suite d'une discussion démarrée par Bardack (petites questions sur le sujet...)

    En résumé, certains conseillent d'utiliser une transaction tout le temps, même pour faire une lecture seule, d'autres pensent que ça n'est pas utile...

    Mon avis :

    Dans un développement d'application web (client léger), je ne vois pas l'intéret d'utiliser une transaction qui à mon sens, sert avant tout à garantir l'intégrité des données pour des mises à jour (sens large) multiples sur une ou plusieurs tables.

    On en était là, vos commentaires sont les bienvenus...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Je fais partie de ceux qui pensent qu'ils faut utiliser des transactions même pour de la lecture de données.
    De toute façon, tout accès vers une base de données se fait dans une transaction. Si on ne la voit pas explicitement, c'est à cause du mode autocommit.

    L'intérêt est de protéger ses données contre les modifications extérieures.
    Voir :
    http://www.developpez.net/forums/sho...=290661&page=6

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 53
    Par défaut
    Bonsoir,

    A mon avis, il est même déconseillé d'ouvrir une transaction pour faire uniquement un SELECT...
    Un bon SGBDR se doit d'implémenter les propriétés ACID (http://sqlpro.developpez.com/cours/s...dements/#L4.5). J'en déduis qu'une transaction assure la cohérence et la pertinence des données d'une suite d'instructions SQL.

    Il y a aussi une histoire de verrous partagé et exclusif... Je ne sais pas si c'est le cas de tous les serveurs, mais en général lors d'un SELECT en dehors d'une transaction, le moteur SGBDR pose un verrou partagé alors que pour un UPDATE, un INSERT ou un DELETE, il pose un verou exclusif sur l'enregistrement. Du coup, s'il y a un SELECT alors qu'un verrou exculif est posé sur l'enregistrement, il devra attendre que le verrou se termine.

    A l'inverse, si l'on utilise une transaction juste pour faire un SELECT, ce qui à mon avis est inutile, on pénalise les instructions de type UPDATE, INSERT ou DELETE qui sont en général importantes. Sur un site transactionnel (marchand ^^) qui enregistre plusieurs centaines ou milliers d'utilisateurs, ça ne serait pas permis. Je parle en connaissance de cause...

    ++
    Laurent

  4. #4
    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
    http://forum.hibernate.org/viewtopic...098&highlight=

    Va voir ce lien, où il y a une petite explication d'un des membres de l'équipe d'Hibernate, qui je pense (et même j'en suis certain) sait très bien de quoi il parle.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ca dépend quand même du type d'application qu'on écrit.

    J'arrive à comprendre l'utilisation d'une transaction pour une lecture en vue de modification, dans le cas où on veut empêcher un autre utilisateur de faire une modification concurrente.
    Mais, ça suppose quand même qu'on maintient la transaction active jusqu'au commit/rollback final.

    C'est là que le type d'application intervient : pour une appli web, en mode déconnecté (http), je ne pense pas qu'on s'amuse à sauvegarder une transaction (par exemple dans la session) pour la récupérer au prochain request et continuer... (bien sûr, on pourrait...)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    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
    L'idée n'est pas de garder une transaction active longtemps.
    L'idée est simplement d'avoir des données cohérentes au sein d'une transaction, qui regrouperait plusieurs lectures.

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

Discussions similaires

  1. Empêcher la lecture d'une table pendant une transaction ?
    Par pouli dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/11/2008, 19h06
  2. Fonctionnement simplifié d'une transaction Oracle
    Par jack554 dans le forum Oracle
    Réponses: 7
    Dernier message: 21/04/2005, 10h25
  3. comment identifier une transaction http?
    Par didier.cabale dans le forum Développement
    Réponses: 5
    Dernier message: 13/04/2005, 16h42
  4. [SGBD]Evaluation du temps d'une transaction
    Par vsavoir dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 26/10/2004, 17h53
  5. Utilisation d'une transaction
    Par Bernard M dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/04/2004, 23h31

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