Bonjour,
J'ai effectué le mapping de ma base avec hibernate, et je test actuellement certaines fonctionnalités qui me sont nécessaire pour mon project. Le mapping fonctionne bien (i.e. lorsque j'effectue un requête pour récupérer un objet, l'objet est bien récupé), mais un problème persiste : Supposons le sénario suivant: un certain nombre d'entité en base sont mappés avec hibernate. j'ai donc une liste d'objets mappés. je souhaite vérifier toutes les X minutes si mes entitées mappées ont été modifiées dans la base, auquel cas je devrais les recharger. il me serait facil d'effectuer un appel a la méthode refresh de l'objet Session, mais étant donné la quantité d'objets, je pense qu'effectuer autant de requête que d'objets risque de prendre du temps et n'est pas très performant. Pour éviter les refresh inutiles, j'ai rajouté un champ dans la base qui représente la date de derniere mise à jour (cette date étant automatiquement généré grâce à un trigger en base détectant si la modification). Ainsi, il me suffit d'exécuter une requête permettant de récupérer tous les objets qui ont leur date de mise plus récente que le dernier refresh avec la base. Cette requête me renvois bien les objets qui ont été modifiés, mais les valeurs modifiés ne sont pas chargée. Je suis obligé d'appeler refresh sur le résultat de ma requête précédente pour obtenir les nouvelles valeurs (i.e la requête ne sert à rien).
J'aimerais donc savoir s'il était possible de forcer hibernate à mettre à jour tous les champs de l'objet lors de cette requête. Le problème peut sembler complexe comme ça, mais il est simple. N'hésitez pas à me poser des questions si vous ne comprenez pas (même si la pour le moment, c'est moi qui comprends pas trop comment fonctionne hibernate).
Merci d'avance pour les réponses Cyril
|