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

NHibernate Discussion :

[Nhibernate] problème de synchro sur des accès concurrents


Sujet :

NHibernate

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 49
    Points
    49
    Par défaut [Nhibernate] problème de synchro sur des accès concurrents
    Bonjour

    Je rencontre un problème de synchronisation entre deux applis accédant à la même base de données du fait du cache de nhbernate.

    J'ai une appli A qui lit et affiche régulièrement les enregistrements d'une table .
    J'ai une seconde appli B qui modifie les enregistrements de cette même table.
    Je ne vois pas les données évoluer sur A alors dans la base les données sont bien modifiées.
    Les deux applications tournent sur des machines différentes, la base de données (oracle 10.2 en l’occurrence) est hébergée sur un serveur.

    Comment puis je forcer nhibernate à relire systématiquement les données dans la base ou éventuellement réduire le timeout du cache à quelques secondes.
    Si cela existe je souhaiterais régler sans ajout de code (ajout d'une option dans le fichier de configuration).

    merci de votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    C'est un peu trop vague pour te répondre.

    Dans tous les cas, nhibernate fonctionne comme ADO.NET :
    Tu te connectes à la base
    Tu manipules la connection
    Tu fermes la connection

    Dans le laps de temps d'une session, il utilise un cache dit de niveau 1 qui est un cache de session.
    Le second de niveau 2 permet de mettre en cache des objets ou des requêtes disonibles pour tous les utilisateurs de la factory (toutes les sessions).

    Si tu as une application A qui lit les données à un instant t; une application B qui écrit les données à un instant t+1; A reste sur les données à t si tu es dans la même session. Si tu recharge les données dans A tu verras biens les modifications.

    C'est à toi de faire le nécessaire pour que B et A dispose d'une notification permettant à A de savoir que B met à jour et qu'il faut rafraichir les données.
    Mais là, ce n'est pas une problèmatique de nhibernate.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 60
    Points : 88
    Points
    88
    Par défaut
    C'est normal comme ta donnée est déjà dans le cache de 2nd niveau, la machine A ne la rechargera pas depuis la bd tant que le cache n'est pas expiré.

    Ton cache de second niveau est associé à un provider de cache (par exemple syscache pour utiliser le cache d'ASP.NET), et ce dernier possède un moyen de régler l'expiration du cache (exemple web.config pour ASP.NET).

    Tu peux aussi configurer pour chaque entité si tu souhaites qu'elle soit cachée ou pas dans le cache de 2nd niveau et lui associer une région pour pouvoir gérer des durées d'expiration différentes suivant la nature des données.

    http://nhforge.org/doc/nh/en/index.h...formance-cache

    Une autre solution serait d'utiliser un cache distribué, dans ce cas, c'est lui qui gère tout seul la synchronisation des données entre A et B.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2014, 14h50
  2. [MySQL 5] Gestion des accès concurrents sur un moteur InnoDB
    Par Kaldyris dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/06/2011, 16h45
  3. Problèmes des accès concurrents SAS
    Par bar_79 dans le forum Administration et Installation
    Réponses: 3
    Dernier message: 09/12/2010, 11h40
  4. Problème d'id sur des sous formulaires.
    Par antier dans le forum Access
    Réponses: 4
    Dernier message: 07/01/2006, 16h53
  5. Problème de *pointeur sur des char
    Par Spartan03 dans le forum C++
    Réponses: 2
    Dernier message: 18/09/2005, 14h20

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