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 :

Plusieurs applications sur une même base de données


Sujet :

Hibernate Java

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut Plusieurs applications sur une même base de données
    Bonjour,

    Voici mon problème:
    j'ai plusieurs applications qui utilise la même base de données. Chacune des ses applications a sa propre session hibernate. Ma question: est il possible de savoir (via des évènements peut être?) si une application est en train d'ajouter ou de modifier une ligne de la base de données? Hibernate fournit il des classes permettant de faire ce genre de choses?

    Je vous remercie d'avance pour vos réponses.

    ++

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu veux gérer le problèmes d'accès concurrents, tu peux le faire par l'attribut version du mapping.

    Pour le reste, tu vas devoir le gérer toi même.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut Merci
    Ok donc il n'y a pas moyen de savoir qui fait quoi.
    Je te remercie pour ta réponse.
    ++

  4. #4
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Quel est le besoin réel ?
    - S'il s'agit d'être informé de la modification/ajout de données de références du cache de second niveau, l'utilisation d'un cache distribué et transactionnel fera l'affaire (JBoss Cache).
    - S'il s'agit d'autres types de données, je ne vois pas bien l'interet, une nouvelle requête fera apparaitre les nouveaux éléments. Si cela est vraiment nécessaire, on peut envisager l'utilisation d'Interceptor qui envoie un message de notification dans un Topic JMS qui sera lu par chacune des applis. Le pb dans ce cas est que la notification se fait de manière asynchrone, il faut donc voir si cela correspond à tes attentes.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Salut,

    En fait, je voulais être informé des modifications et des ajouts de données dans la base. Mes applications ne sont pas censées communiquer entre elles. Leur seul moyen de communication est de passer par la base de données.
    Tu as parlé d'un cache distribué, je vais me renseigner dessus mais il me semble que la seule solution est de faire une nouvelle requête pour connaître les éléments ajoutés ou modifiés.

    Merci

    ++

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Bonjour,

    Je me suis renseignée sur les caches de second niveau et également sur le cache de requête. Finalement c'est la seconde qui répond le plus à mon besoin je crois. Si j'ai bien lu la doc de Hibernate à ce sujet, il est possible de mettre le résultat d'une requête dans un cache et de forcer le rafraichissement des résultats.
    Etant donné qu'il s'agit d'une autre application (avec une session Hibernate différente) qui modifie la base de données, cela me convient très bien.

    Merci

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Un cache appartient à une sessionFactory, donc, je ne vois pas comment tu vas partager tes informations entre sessionFactory, donc entre tes applications. A moins que tu aies la même sessionFactory pour plusieurs applications.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Je n'ai peut être pas très bien compris mais sur le site de Hibernate.org, ils disent:
    Si une requête doit forcer le rafraîchissement de sa région de cache, vous devez appeler Query.setCacheMode(CacheMode.REFRESH). C'est particulièrement utile lorsque les données peuvent avoir été mises à jour par un processus séparé (e.g. elles n'ont pas été modifiées par Hibernate). Cela permet à l'application de rafraîchir de manière sélective les résultats d'une requête particulière. Il s'agit d'une alternative plus efficace à l'éviction d'une région du cache à l'aide de la méthode SessionFactory.evictQueries().
    Ca ne signifie pas qu'il s'agit de session différente?

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Le rafraichissement du cache n'est pas automatique, il sera exécuté quand tu appeleras ta requête.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/02/2015, 09h32
  2. [XL-2010] Plusieurs connexion vers une même base de données
    Par le-guedin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2013, 11h32
  3. Réponses: 0
    Dernier message: 18/07/2011, 16h52
  4. [MySQL] Plusieurs sites Wordpress sur une même base de données
    Par singleProject dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/02/2010, 15h18
  5. [Administration] Gérer plusieurs applications sur une même machine
    Par ego dans le forum Subversion
    Réponses: 0
    Dernier message: 19/06/2009, 08h27

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