La sesión en Hibernate es un caché de primer nivel, que puede entenderse como un caché de nivel de proceso (barra de subproceso), que existe durante la ejecución del proceso (barra de subproces).
La sesión puede entenderse como un objeto que puede operar la base de datos, y hay métodos para operar la base de datos en este objeto.
En Java, el caché generalmente se refiere al espacio de memoria ocupado por las propiedades de los objetos Java, generalmente algunos atributos de tipo de colección. Una serie de colecciones de Java se definen en la clase de implementación SessionPl de la interfaz de sesión, y estas colecciones de Java forman el caché de la sesión.
En general (mi comprensión de la sesión): la sesión es el intermediario (un objeto) entre Hibernate y DB. Hay dos cosas o funciones en la sesión.
(1) Métodos para operar la base de datos
(2) Hay algunos atributos (conjuntos, etc.) en la sesión, que usan estos atributos para almacenar el idioma SQL que se enviarán a la DB, almacenan en caché los datos que se han encontrado de la DB, etc.
Caché de la sesión
El caché de la sesión está compuesto por una serie de colecciones de Java. Cuando se agrega un objeto al caché de la sesión, la referencia a este objeto se agrega a la colección Java. En el futuro, incluso si la variable de referencia en la aplicación ya no se refiere al objeto, siempre que no se borre el caché de la sesión, el objeto permanecerá en su ciclo de vida.
El papel de la caché de la sesión:
1) Reduzca la frecuencia de acceder a la base de datos.
2) Asegúrese de que los objetos en el caché se mantengan sincronización con los registros relevantes en la base de datos.
Es hora de limpiar el caché en la sesión:
1) Cuando se llama el método de transacción Commit (), el método Commit () primero limpia el caché (siempre que FlushMode.commit/Auto), y luego envíe transacciones a la base de datos.
2) Cuando la aplicación llama a la sesión Find () o iterate (), si las propiedades del objeto persistente en el cambio de caché, el caché se limpiará primero para asegurarse de que los resultados de la consulta puedan reflejar el último estado del objeto persistente.
3) Cuando la aplicación muestra el método FLUSH () de la sesión.
El punto en el tiempo en que el modo de limpieza de la sesión realiza la operación de caché de limpieza:
Interfaz de sesión
La interfaz de sesión es la interfaz más importante proporcionada por Hibernate a aplicaciones para manipular las bases de datos. Proporciona métodos básicos para guardar, actualizar, eliminar y consultar.
1.save (): Agregue un objeto temporal al caché y se convierte en un objeto persistente
-> Seleccione el generador de clave principal especificado en el archivo de asignación para asignar un OID único al objeto persistente
-> Planifique una instrucción Insertar para ensamblar el valor de propiedad actual del objeto de parámetro en la instrucción Insertar, pero el método Save () no ejecuta la instrucción SQLINSERT inmediatamente, y solo se ejecutará cuando la sesión limpie el caché.
-> Si las propiedades del objeto persistente se modifican después del método Save (), la sesión ejecutará declaraciones SQLUPDATE adicionales al limpiar el caché.
Nota: ¡El método Save () se usa para persistir un objeto temporal!
Si pasa un objeto persistente al método save (), no se realizará ninguna operación, pasos redundantes
Si se pasa un objeto de estado libre al método save (), la sesión lo procesará como un objeto temporal e insertará un registro en la base de datos nuevamente, ¡lo que no satisface las necesidades comerciales!
2. Update (): Vuelva a agregar el objeto del cliente al caché de la sesión y conviértelo en un objeto persistente.
---> Programe una declaración de actualización, que solo se ejecutará cuando se limpie el caché, y los valores de atributo en el objeto de parámetro se ensamblarán en la instrucción de actualización cuando se ejecute.
Nota: Update () convierte un objeto gratuito en un objeto persistente.
Mientras el objeto gratuito se asocie con una sesión a través del método Update (), la sesión ejecutará la declaración de actualización planificada por el método de actualización al limpiar el caché.
3.SaveOrupdate (): contiene los métodos de Save () y Update (). Si el parámetro aprobado es un objeto temporal, llame al método Guardar. Si el parámetro es un objeto gratuito, llame al método Update (). Si el parámetro aprobado es un objeto persistente, regrese directamente.
4.Load ()/get (): cargarán un objeto persistente de la base de datos en función de la OID dada. La diferencia es que cuando no hay un registro correspondiente a la OID en la base de datos, el método Load () lanzará una excepción ObjectNotFoundException, y el método get () devolverá NULL.
5.delete (): se utiliza para eliminar registros correspondientes a los objetos de parámetros de la base de datos. Si el parámetro aprobado es un objeto persistente, la sesión planea ejecutar una instrucción Eliminar. Si el parámetro aprobado es un objeto libre, primero haga el objeto libre asociado con la sesión para que sea un objeto persistente y luego planifique una declaración de eliminación para ejecutar al limpiar el caché.
6.Evict (): Borre el objeto persistente especificado por el parámetro del caché.
Ocasiones aplicables: no desea que la sesión continúe actualizando sincrónicamente la base de datos de acuerdo con el estado del objeto.
En el caso de la actualización de lotes o la eliminación de lotes, cuando se actualiza o elimina un objeto, la memoria ocupada por el objeto se libera a tiempo. Por supuesto, las operaciones por lotes dan prioridad a JDBC.
7.Clear (): Borre todos los objetos persistentes en el caché.
Resumir
Lo anterior es una comprensión rápida de todo el contenido de la sesión en Hibernate, y espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!