Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > NHibernate
NHibernate Forum d'entraide sur l'utilisation du mappeur objet/relationnel NHibernate.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 16h05   #1
m3z91
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 33
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 33
Points : 12
Points : 12
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
m3z91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 14h38   #2
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
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.
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h49.


 
 
 
 
Partenaires

Hébergement Web