2009-12-31 3 views
2

J'essaie de trouver une solution pour une erreur architecturale et je ne suis pas l'architecte: PDeux correspondances pour une table de base de données

Y at-il la possibilité d'avoir deux applications pour la même table dans hibernate3? Le premier aurait des attributs paresseux mis à vrai. Le second mappage aurait des attributs paresseux mis à false; d'ailleurs, les mappings sont égaux. Je sais, c'est un comportement étrange et bizarre, mais le client demande une solution rapide.

+1

avez-vous vraiment besoin d'un deuxième mappage ou pouvez-vous simplement définir le fetch paresseux à true/false lorsque vous récupérez votre entité? – bertolami

+0

Je pense qu'un second mappage est nécessaire car deux scénarios différents: la même entité est lue par des processus en ligne et par lots. Le processus en ligne a déjà conçu son mapping, où lazy est définie sur false. Pour un traitement par lots c'est un problème, parce que paresseux = faux provoque la lecture de toute la hiérarchie; C'est un gros problème pour les longues tâches. C'est le problème architectural: est-il possible d'avoir un second mapping (où lazy est mis à true) pour éviter de changer le "mapping en ligne"? Merci pour votre aide, bertolami. –

Répondre

2

En théorie, il n'y a pas de raison, mais vous devriez faire attention. Le cache d'hibernation (session et caches L2) les traitera comme distincts, donc si vous manipulez la ligne du tableau en utilisant les deux mappages dans la même session, vous courez le risque de perdre des données, car Hibernate ne saura pas qu'ils font référence à la mêmes données sous-jacentes.

0

La solution très rapide serait d'avoir 2 classes différentes mappées à la même table.

Questions connexes