2010-04-25 6 views
0

Je regarde un fichier de vidage de base de données, et je vois beaucoup d'enregistrements dans diverses tables avec leur numéro de version défini dans des valeurs autres que 0 (même 94 dans un cas). Je comprends que cela a à voir avec la stratégie de verrouillage d'hibernation, mais mon inquiétude est que c'est aujourd'hui dimanche, et le site n'a presque pas de visiteurs donc est-ce normal? Ou y a-t-il un bug d'hibernation connu ou même une erreur de programmation qui le produit?Les valeurs de version de Hibernate dans Grails app

Par ailleurs, est-il sûr/recommandé de réinitialiser ces valeurs manuellement à zéro lors de la restauration d'une sauvegarde de base de données?

Répondre

2

Le champ de version Hibernate est vraiment juste un compte du nombre de fois que cet enregistrement a été sauvegardé (bien, moins 1, puisque la première fois qu'il est sauvegardé, la valeur est 0). Notez que ce nombre n'est pas réellement utilisé comme nombre de sauvegarde, donc la valeur réelle à tout moment n'est pas importante.

La façon dont il est utilisé est de déterminer si la ligne a été enregistrée entre lorsque vous lisez la ligne et quand vous essayez de sauvegarder la ligne. Si vous lisez la ligne et que la valeur de la version est 12, vous avez ensuite modifié l'objet et essayé de l'enregistrer. La première chose que Hibernate fait est de vérifier si la valeur dans la DB pour la version sur cette rangée est toujours 12. Sinon, alors un autre processus a sauvé cette ligne depuis que vous l'avez lu, et si vous sauvegardez maintenant, vous pouvez remplacer les modifications apportées lors de cette sauvegarde précédente. Pour répondre à votre question ... Tant que rien n'est "au milieu" d'un processus de lecture/stockage potentiel (comme le site est en panne, ou quelque chose comme ça), alors vous pouvez changer le champ de la version à n'importe quel nombre vous aimez. Il s'incrémentera à chaque fois que cette ligne est stockée.

1

De plus, si vous ne avez pas besoin, vous pouvez le désactiver avec

mappage statique { fausse version }

Questions connexes