OVH Cloud OVH Cloud

[ Hibernate et BDD ] Mises à jour

2 réponses
Avatar
Jim How
Bonjour,

J'utilise Hibernate au travers de servlet pour acceder à mes données,
et j'ai une application propriétaire qui met à jour la base en parallèle.

Comment faire pour que Hibernate me detecte un changement sur un champ au
cours de la session ?

En d'autre terme avec des accès concurrents comment faire pour que sur
certains objets (voir champs) j'ai du cache et pas sur d'autre ?

La doc d'hibernate est pas super clair (ou c'est moi qui suis long à la
détente) sur le sujet.
Est-ce que je dois créer un champs version et faire des merge() ?

Merci de votre aide...

--
Jim

2 réponses

Avatar
Pierre Gilquin
Ca va surement pas t'aider.
J'utilise un seul "canal" : nn mapping object-relationnel et un serveur
d'appli qui sert aussi bien des objets distribuées pour un client Java et
des pages Web.

Sinon, tu dois surement pouvoir parametrer Hibernate pour qu'il refetch
souvent ou selon une notification en provenance de ton appli.

Pierre

"Jim How" a écrit dans le message de news:
443baef1$0$21302$
Bonjour,

J'utilise Hibernate au travers de servlet pour acceder à mes données,
et j'ai une application propriétaire qui met à jour la base en parallèle.

Comment faire pour que Hibernate me detecte un changement sur un champ au
cours de la session ?

En d'autre terme avec des accès concurrents comment faire pour que sur
certains objets (voir champs) j'ai du cache et pas sur d'autre ?

La doc d'hibernate est pas super clair (ou c'est moi qui suis long à la
détente) sur le sujet.
Est-ce que je dois créer un champs version et faire des merge() ?

Merci de votre aide...

--
Jim



Avatar
alexandre cartapanis
Bonjour,

J'utilise Hibernate au travers de servlet pour acceder à mes donnée s,
et j'ai une application propriétaire qui met à jour la base en para llèle.

Comment faire pour que Hibernate me detecte un changement sur un champ au
cours de la session ?

En d'autre terme avec des accès concurrents comment faire pour que su r
certains objets (voir champs) j'ai du cache et pas sur d'autre ?

La doc d'hibernate est pas super clair (ou c'est moi qui suis long à la
détente) sur le sujet.
Est-ce que je dois créer un champs version et faire des merge() ?

Merci de votre aide...



A mon avis en jouant sur l'élément cache et lazy tu dois pouvoir arri ver
a faire qqc.

l'idée c'est d'identifier les tables susceptibles d'être modifié. S i
toute les sont, autant virer le cache immédiatement. Après, tu peux
mettre un "read-only" comme stratégie de cache et utiliser lazy.

L'autre solution est de gérer le cache "toi même",
http://www.hibernate.org/hib_docs/v3/reference/fr/html_single/#performanc e-sessioncache
Ici l'idée c'est de n'appeler flush que quand tu en as besoin.

Bon a mon avis tu risques qd même d'avoir un souci de performance a un
moment... Mais bon c'est récurrent avec hibernate.



--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email