Maison > Java > javaDidacticiel > le corps du texte

Comprendre le cache de premier niveau et la zone d'instantané dans Hibernate

巴扎黑
Libérer: 2017-06-26 11:25:55
original
2243 Les gens l'ont consulté

Au début, je pensais que cette zone d'instantanés était difficile à comprendre. Après avoir lu de nombreux blogs en ligne, j'ai commencé à comprendre. Je le comprends basé sur ADO.NET. Il existe une classe dans ADO.NET appelée SqlCommandBuilder À mon avis, c'est la chose correspondant à la zone d'instantané Hibernate dans ADO.NET. Ce SqlCommandBuilder peut créer une instruction SQL, et lors de la mise à jour. Lorsque la méthode est appelée, les informations de la base de données peuvent être mises à jour (y compris la mise à jour et la suppression). L'une des classes d'énumération essentielles est la classe RowState du bit d'état de la ligne. Je combine ce bit d'état de la ligne avec Hibernate La comparaison (comparer la zone de cache et la zone d'instantané). ) est considéré comme correspondant. Cependant, lors de l'actualisation de la zone de cache, Hibernate effectue une comparaison du contenu de la zone de cache et de la zone d'instantané (

S'il trouve une différence, il met à jour la zone d'instantané et stocke une instruction SQL de mise à jour. S'il ne s'agit pas d'un opération d'actualisation, , mais soumet l'opération de transaction, alors non seulement l'instruction de mise à jour sera stockée, mais également le SQL

sera envoyé à la base de données pour exécuter la mise à jour), mais ADO.NET n'a pas comparé, mais enregistré ( c'est-à-dire que la valeur de la ligne RowStae a été modifiée), et enfin SqlCommandBuilder met à jour la base de données en fonction de ce bit d'état et de cette clé primaire. En fait, d'un certain point de vue, la comparaison est également une sorte d'enregistrement (similaire à la modification du bit d'état de la ligne). . Jusqu'à ce que la transaction soit validée, elle est mise à jour dans la base de données.

Ajoutez une phrase, je comprends qu'un instantané est un instantané de la base de données (initialement un instantané de certaines lignes de la base de données, puis après une seule opération, c'est n'est plus un instantané de la base de données) Il s'agit d'un instantané, mais une fois la transaction validée, il devient un instantané d'une partie des lignes de la base de données.)

Pour plus d'informations sur SqlCommandBuilder, vous pouvez lire ce blog

[

Classe SQLCommandBuilder

Il y a aussi cette classe

[Classe RowSate ]

Peut-être que je ne l'ai pas expliqué assez clairement, mais c'est ma compréhension actuelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal