2009-12-01 4 views
1
session.open 
insertIntoTODB() 
getList() 
session.close 

session.open() 
getList(); 
sesson.close() 

Le premier cache de leve est seulement limité dans la session ouverte et ferme et pour la deuxième session suivante ouverte, getList() obtiendra de la DB au lieu du cache?comprendre le cache de premier niveau d'hibernation

+0

Vous pouvez supprimer l'étiquette non liée à la programmation. Ceci est lié à la programmation. –

+1

@bruno: ayant plus de 500 rep, je crois que vous pouvez également supprimer le tag. – Buhb

Répondre

3

Oui. Le cache de 1er niveau est réservé à la session. Le deuxième appel getList() ira à la base de données.

EDIT: Le deuxième appel getList() ira à la base de données, en l'absence du cache de second niveau, ainsi noté par mR_fr0g dans sa réponse.

+0

Si getList() est une requête autre que l'ID (ou une requête de table complète), les deux requêtes vont toucher la base de données, mais dans le premier cas, Hibernate retournera les objets qui sont déjà dans le cache de session, plutôt que les construire à partir de l'ensemble de résultats de la base de données. Un fichier session.get ou load n'aura pas à toucher la base de données si l'objet récupéré se trouve dans le cache de session. –

3

Le cache de premier niveau est l'étendue de session. La seconde getList() ira à la base de données seulement en l'absence d'un second level cache. Les caches de second niveau sont la portée de la session.

+0

En fait, je n'ai jamais entendu le terme cache de premier niveau dans Hibernate. Je connaissais seulement le deuxième niveau. :) –

Questions connexes