La session dans Hibernate est un cache de premier niveau, qui peut être compris comme un cache de niveau (barre de filetage), qui existe pendant l'exécution du processus (barre de thread).
La session peut être comprise comme un objet qui peut faire fonctionner la base de données, et il existe des méthodes pour faire fonctionner la base de données dans cet objet.
En Java, Cache fait généralement référence à l'espace mémoire occupé par les propriétés des objets Java, généralement certains attributs de type de collection. Une série de collections Java est définie dans la session de classe d'implémentation de l'interface de session, et ces collections Java forment le cache de session.
En général (ma compréhension de la session): la session est l'intermédiaire (un objet) entre Hibernate et DB. Il y a deux choses ou fonctions dans la session.
(1) Méthodes d'exploitation de la base de données
(2) Il y a certains attributs (ensembles, etc.) dans la session, qui utilisent ces attributs pour stocker le langage SQL à envoyer à la base de données, cache les données qui ont été trouvées à partir de la base de données, etc.
Cache de session
Le cache de session est composé d'une série de collections Java. Lorsqu'un objet est ajouté au cache de session, la référence à cet objet est ajoutée à la collection Java. À l'avenir, même si la variable de référence dans l'application ne fait plus référence à l'objet, tant que le cache de session n'est pas effacé, l'objet restera dans son cycle de vie.
Le rôle du cache de session:
1) Réduisez la fréquence d'accès à la base de données.
2) Assurez-vous que les objets du cache sont maintenus en synchronisation avec les enregistrements pertinents dans la base de données.
Il est temps de nettoyer le cache en session:
1) Lorsque la méthode de transaction commit () est appelée, la méthode commit () nettoie d'abord le cache (à condition que FlushMode.Commit / Auto), puis soumet les transactions à la base de données.
2) Lorsque l'application appelle la session Find () ou Itereter (), si les propriétés de l'objet persistant dans le changement de cache, le cache sera nettoyé en premier pour s'assurer que les résultats de la requête peuvent refléter le dernier statut de l'objet persistant.
3) Lorsque l'application affiche la méthode Flush () de la session est appelée.
Le point dans le temps où le mode de nettoyage de la session effectue l'opération de cache de nettoyage:
Interface de session
L'interface de session est l'interface la plus importante fournie par Hibernate aux applications pour manipuler les bases de données. Il fournit des méthodes de base pour enregistrer, mettre à jour, supprimer et interroger.
1.Save (): Ajoutez un objet temporaire au cache, et il devient un objet persistant
-> Sélectionnez le générateur de clé primaire spécifié dans le fichier de mappage pour attribuer un OID unique à l'objet persistant
-> Planifiez une instruction INSERT pour assembler la valeur de propriété actuelle de l'objet Paramètre dans l'instruction INSERT, mais la méthode Save () n'exécute pas immédiatement l'instruction SQLinsert et ne sera exécutée que lorsque la session nettoie le cache.
-> Si les propriétés de l'objet persistant sont modifiées après la méthode Save (), la session exécutera des instructions SQLUPDate supplémentaires lors du nettoyage du cache.
Remarque: La méthode Save () est utilisée pour persister un objet temporaire!
Si vous passez un objet persistant à la méthode Save (), aucune opération ne sera effectuée, étapes redondantes
Si un objet d'état libre est transmis à la méthode Save (), la session la traitera à nouveau comme un objet temporaire et insérera à nouveau un enregistrement dans la base de données, ce qui ne répond pas aux besoins de l'entreprise!
2. Update (): REALLAGE L'OBJET CLIENT DU CACHE SESSION et le transformez en un objet persistant.
---> Planifiez une instruction de mise à jour, qui ne sera exécutée que lorsque le cache est nettoyé, et les valeurs d'attribut dans l'objet Paramètre seront assemblées dans l'instruction de mise à jour lors de sa réalisation.
Remarque: Update () convertit un objet libre en un objet persistant.
Tant que l'objet libre est associé à une session via la méthode Update (), la session exécutera l'instruction de mise à jour prévue par la méthode de mise à jour lors du nettoyage du cache.
3.SaveOrUpDate (): Il contient à la fois les fonctions des méthodes Save () et Update (). Si le paramètre passé est un objet temporaire, appelez la méthode de sauvegarde. Si le paramètre est un objet libre, appelez la méthode Update (). Si le paramètre passé est un objet persistant, retournez directement.
4.Load () / get (): Ils chargeront un objet persistant à partir de la base de données en fonction de l'OID donné. La différence est que lorsqu'il n'y a pas d'enregistrement correspondant à l'OID dans la base de données, la méthode Load () lancera une exception objectNotFoundException et la méthode get () renvoie NULL.
5.Delete (): est utilisé pour supprimer des enregistrements correspondant aux objets de paramètre de la base de données. Si le paramètre passé est un objet persistant, la session prévoit d'exécuter une instruction Supprimer. Si le paramètre passé est un objet libre, faites d'abord l'objet libre associé à la session pour en faire un objet persistant, puis planifiez une instruction de suppression à exécuter lors du nettoyage du cache.
6.Evict (): effacer l'objet persistant spécifié par le paramètre du cache.
Occasions applicables: vous ne voulez pas que la session continue de mettre à jour de manière synchrone la base de données en fonction de l'état de l'objet.
Dans le cas de la mise à jour par lots ou de la suppression par lots, lorsqu'un objet est mis à jour ou supprimé, la mémoire occupée par l'objet est publiée dans le temps. Bien sûr, les opérations par lots donnent la priorité à JDBC.
7.Clear (): effacer tous les objets persistants dans le cache.
Résumer
Ce qui précède est une compréhension rapide de l'ensemble du contenu de la session en hibernate, et j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!