2012-07-02 41 views

Respuesta

5

El proceso de sincronización del estado de la conexión JDBC con el estado de los objetos almacenados en la memoria se denomina flush.

Esto ocurre en los siguientes puntos en función del conjunto FlushMode:

  • antes algunas ejecuciones de consulta cuando FlushMode.AUTO (Este es el valor por defecto).
  • de org.hibernate.Transaction.commit() cuando FlushMode.COMMIT
  • de Session.flush()

La diferencia clave es que cuando FlushMode se establece en COMMIT, commit() elimina la sesión y también finaliza la unidad de trabajo y no puede deshacer la transacción en la que flush() hace solo una sincronización normal de la sesión.

FlushMode

Más info

1

De Hibernate docs

Flushing es el proceso de sincronizar el almacén persistente subyacente con el estado con persistencia que tuvo lugar en la memoria.

La afirmación anterior es confusa para algunas personas que pueden estar teniendo la siguiente pregunta (es decir, cuál es la diferencia b/w luego vaciar y confirmar) en mente después de leer la declaración anterior.

Flush es como ejecutar la sentencia pero no comprometerla. Por ejemplo: - abre cualquier herramienta de ejecución sql como oráculo SQLdeveloper, abre una sesión y activa la declaración de actualización. Abre una nueva sesión de sql, no verás actualizaciones hasta y a menos que lo confirmes en la primera sesión. Entonces la consulta se ejecutó en una sesión de Oracle concreta pero no se confirmó.

Cuando llamas a hibernar guardar (o actualizar), no significa que la consulta subyacente se ejecuta al mismo tiempo. En general, se ejecuta cuando la confirmación se realiza de forma explícita o al final de la transacción. Pero hay escenarios (como obtener una ID asignada a un objeto transitorio, controlar el tamaño de la sesión de hibernación como en las actualizaciones por lotes, de lo contrario puede salir de la excepción de mem) donde le gustaría ejecutar la consulta pero no comprometerla. La descarga ayuda aquí

+0

¿Así que flush es como ejecutar una declaración con confirmación automática falsa? –

+0

Sí Exactamente tienes razón. –

Cuestiones relacionadas