Coloque el diagrama de transición de tres estados aquí para facilitar la función del método de análisis:
1.session save () método
La sesión es la interfaz más importante entre todas las interfaces hibernadas, que proporciona métodos para guardar, actualizar, consultar y eliminar datos.
El método Save () de Session puede convertir estados temporales o libres a estados persistentes. Por ejemplo, guarde un objeto del cliente:
SessionFactory SessionFactory; Configuration Configuration = New Configuration (). Configure (); SessionFactory = Configuration.BuildSessionFactory (); Session Session = SessionFactory.Opensession (); Transaction tr = session.beGinTransaction (); // 1. Crear objeto del cliente Customer C1 = new Customer (); C1.SetId (new Long (1)); C1.SetName ("Test"); C1.SetEmail ("[email protected]"); c1.setpassword ("123456"); c1.setDress ("Paradise"); // 2. Llame al método de Save () de sesión para persistir el objeto del cliente Session.save (C1); tr.commit (); session.close ();El método save () realiza principalmente las siguientes tres cosas:
(1) Ponga el objeto del cliente temporal creado por nuevo en el caché para que persista.
(2) Al mismo tiempo, de acuerdo con el generador OID establecido en el archivo de asignación de relaciones de objetos, es decir, el método de generación de clave principal genera un OID único para el objeto.
<
Hay una pregunta en este lugar. Al crear un objeto, si el método setid () genera una clave primaria para la persistencia del objeto. De hecho, no lo es. SETID no genera la clave primaria como lo establecemos, pero genera la clave primaria basada en el método de generación de claves primario configurado en el archivo de asignación de relaciones de objetos. Se puede ejecutar varias veces más, y la clave principal crece por sí misma. Puede ver múltiples datos de la base de datos. La clave principal comienza desde 1, por lo que puede saber que SetId ()
La clave principal no está establecida, de lo contrario la verificación de singularidad de la clave principal de la base de datos no será posible.
También podemos establecer manualmente el valor clave principal. Debemos sobrecargar el método Guardar (), usar el método de sobrecarga Guardar (C1, NewLong (1)) y establecerlo manualmente cada vez.
(3) Planifique ejecutar la instrucción Insertar. Tenga en cuenta que la declaración de inserción no se ejecuta de inmediato, y la instrucción Insertar solo se ejecutará cuando la sesión limpie el caché. Tr.Commit () Conjunto de transacción.
2.session's Update () Método
Convierta los objetos de estado libre en objetos persistentes. Por ejemplo:
SessionFactory SessionFactory; Configuración configuración = nueva configuración (). Configuración (); sessionFactory = Configuration.BuildSessionFactory (); Sesión session1 = sessionFactory.opensession (); Transacción tr1 = session1.begintransaction (); // 1. Crear objeto de cliente Cliente C1 = New Customer (); c1.setId (nuevo largo (1)); c1.setName ("prueba"); c1.setEmail ("[email protected]"); c1.setPassword ("123456"); c1.setaddress ("paraíso"); // 2. Llame al método de guardar () Save () para persistir en la sesión del objeto del cliente1.save (C1); tr1.commit (); session1.close (); // 3. Actualice el objeto de estado gratuito, busque cambios y ejecute la sesión de la declaración de actualización session2 = sessionFactory.opensession (); Transacción tr2 = session2.BeGinTransaction (); c1.setaddress ("actualización de prueba"); Session2.Update (C1); tr2.commit (); session2.close ();La actualización () de la sesión debe hacer lo siguiente:
(1) Agregue el objeto del cliente gratuito al caché de la sesión para convertirse en un objeto persistente.
(2) Ejecutar la declaración de actualización. Al igual que guardar () ejecuta la instrucción Insertar, no ejecuta la instrucción de actualización de inmediato. Cuando se borra el caché, el objeto del cliente se ensambla en una declaración de actualización.
Luego ejecute de nuevo.
Tenga en cuenta que incluso si el cliente no ha cambiado, por defecto, la declaración de actualización se ensamblará cuando se borre el caché. Si es necesario configurar para cambiar, el archivo de asignación de relación de objetos debe establecerse.
3.session saveorUpdate () método
El método SaveRUpDate () contiene las funciones de los métodos Save () y Update (), y se denominan diferentes métodos de acuerdo con el estado del parámetro aprobado. Pasar en un objeto temporal para llamar al método save (), si pasa en un objeto gratuito para llamarlo
Método Update (). Devuelve el objeto persistente entrante. Por lo tanto, cada vez que solo necesitamos pasar en el objeto, saveorUpdate () juzgar automáticamente el estado del estado del objeto aprobado y llamar dinámicamente el método de procesamiento.
¿Cómo determina este método el estado del objeto entrante? Cuando se cumplen cualquiera de las siguientes condiciones, es un estado temporal:
(1) El OID del objeto Java es nulo, lo que significa que el objeto no está instanciado de otra manera. Incluso si se instancia, es un objeto que se ha eliminado y se convierte en un estado temporal después de que se elimine el estado libre. En este caso, el objeto es de estado temporal.
(2) Si el objeto Java tiene control de versión y el número de versión es nulo, significa que no hay un número de versión del objeto.
(3) Personalice el interceptor, llame a ISUNSAVED () y devuelva el valor es verdadero.
4. Métodos de carga de la sesión () y get ()
Ambos métodos se basan en OID, cargando un objeto persistente de la base de datos. El objeto persistente se coloca en el caché de la sesión, y el objeto persistente se puede operar de acuerdo con diferentes necesidades.
La diferencia entre los dos:
Cuando no hay un registro correspondiente en el OID en la base de datos, Load () lanza una excepción y get () devuelve nulo.
5. Método de Delete () de la sesión
delete () como lo indica el nombre se usa para eliminar los registros correspondientes a los objetos Java de la base de datos.
eliminar () si se pasa un objeto persistente, ensamble una declaración de eliminación y ejecute el eliminar; Si se pasa un objeto de estado libre, Hibernate primero asocia al estado libre en la sesión, se convierte en un estado persistente y luego genera la declaración Eliminar.
Realizar la eliminación.
Todos se ejecutan solo cuando se borra el caché de la sesión.
Las ejecuciones anteriores son un objeto, correspondiente a un registro.
Puede usar session.delete ("fromcustomerwhere ..."); para eliminar múltiples datos después de agregar condiciones.
SessionFactory SessionFactory; Configuración configuración = nueva configuración (). Configuración (); sessionFactory = Configuration.BuildSessionFactory (); Sesión session1 = sessionFactory.opensession (); Transacción tr1 = session1.begintransaction (); // 1. Crear objeto de cliente Cliente C1 = New Customer (); c1.setId (nuevo largo (1)); c1.setName ("prueba"); c1.setEmail ("[email protected]"); c1.setPassword ("123456"); c1.setaddress ("paraíso"); // 2. Llame al método de sesión Save () para persistir en la sesión del objeto del cliente1.save (C1); tr1.commit (); session1.close (); // 3. Asociar el objeto de estado libre a la sesión, borrar el caché después de la persistencia y ejecutar la instrucción Eliminar; Póngalo en el estado persistente para eliminarlo directamente; Sesión session2 = sessionFactory.opensession (); Transacción tr2 = session2.BeGinTransaction (); sesión2.delete (C1); tr2.commit (); session2.close (); Resultado de la ejecución, salida de la consola:
Hibernate: seleccione Max (ID) de los clientes
Hibernate: inserte en los clientes (nombre, correo electrónico, contraseña, teléfono, dirección, sexo, es_married, descripción, imagen, cumpleaños, registrado_timo, id) valores (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,,?
Hibernate: Eliminar de los clientes donde id =?
Resumir
Lo anterior es toda la explicación detallada del código de operación de sesión, eliminación, modificación y búsqueda de la sesión en Hibernate, 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!