org.hibernate.Session.clear () considerado Nocivo?

Esta es una pregunta de diseño, no se envió un código concreto para proteger mi trasero.

Al trabajar con Hibernate, el flujo de trabajo estándar es el siguiente:

Abrir sesiónIniciar transacción Hacer el negocio (leer y modificar datos)Commitir transacciónCerrar la sesió

posiblemente con iteraciones hasta el 2-4.

Cuáles son los casos de uso razonables para Session.clear ()?

A: El problema concreto que tengo es un código (grande) que carga y modifica entidades, luego borra () la sesión, esencialmente desechando los cambios que se hicieron. (La tarea empresarial a realizar no incluye la modificación de las entidades, por lo que el código "funciona").

¿Me parece que el diseño correcto sería asegurarse de que el (gran) fragmento de código no realice cambios que no quiera guardar?

B: Creo que Session.clear () existe por conveniencia / flexibilidad, no porque sea una buena idea usarlo.

He entendido mal la filosofía de Hibernat

C: Pregunta secundaria: ¿es una mala idea que el código marco borre incondicionalmente () la sesión cuando se completa una tarea? En mi humilde opinión, el marco debería quejarse si la sesión está sucia cuando se completa una tarea. La sesión debe cerrarse, ya que la tarea se realiza ... (Sin tener en cuenta el rendimiento por minuto)

(Etiquetas A, B y C para que pueda indicar a qué parte está respondiendo).

Respuestas a la pregunta(2)

Su respuesta a la pregunta