Parece que hay dos patrones para implementar las transacciones comerciales que abarcan varias peticiones HTTP con JPA:JPA: Extendiendo el contexto de persistencia frente a entidades desprendimiento
- entidad-manager-por-petición con entidades separadas
- contexto de persistencia extendida
¿Cuáles son las ventajas respectivas de estos patrones? ¿Cuándo debería ser el preferido?
Hasta el momento, se me ocurrió:
- ampliados garantías contexto de persistencia ese objeto identidad es equivalente a la identidad de base de datos, lo que simplifica el modelo de programación y potencialmente disspelling la necesidad de implementar es igual para las entidades
- desenlazadas las entidades requieren menos memoria que un contexto de persistencia extendido, ya que el contexto de persistencia también tiene que almacenar el estado anterior de la entidad para la detección de cambios
- ya no hace referencia a las entidades separadas que se vuelven elegibles para la recolección de basura; los objetos persistentes primero deben separarse explícitamente
Sin embargo, al no tener ninguna experiencia práctica con JPA, estoy seguro de haber perdido algo de importancia, de ahí esta pregunta.
En caso de que importe: tenemos la intención de utilizar JPA 2.0 respaldado por Hibernate 3.6.
Editar: Nuestra tecnología es vista JSF 2.0, en un contenedor EJB 3.1, con CDI y, posiblemente, la costura 3.
Gracias, esos son buenos alimentos para pensamiento. He agregado detalles sobre mi tecnología de visualización a la pregunta. Sin embargo, no estoy seguro de haber entendido completamente tu primer punto: ¿no tendría el mismo problema con las entidades separadas? – meriton
Sí, si está almacenando el lado del servidor de estado, y el uso de múltiples cuentas es compatible, necesita algún tipo de gestión de conversación para indicar qué estado de la pestaña debe ir con cada solicitud. Señalé eso más para mostrar la amplificación en la diferencia del consumo de memoria/recursos del lado del servidor. – Affe
@Affe, estoy enfrentando el mismo problema que mencionaste en el punto 4. Mi modo de descarga es MANUAL y las actualizaciones son parte de una larga conversación. Cuando el formulario se guarda por primera vez, los datos se almacenan correctamente. Pero cuando se realizan cambios a los datos del formulario en la página que acaba de procesar, sucede exactamente lo que mencionó. ¿Hay un enfoque que pueda seguir para evitar esto? Como ahora no puedo dividir este caso de uso en una cosa basada en solicitud con entidades separadas. – Amit