5

estoy recibiendo el seguimiento de pila:HibernateOptimisticLockingFailureException marca la conexión como 'cerrada'?

org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.btfin.wrapcore.request.MFRequest] with identifier [2850448]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.btfin.wrapcore.request.MFRequest#2850448] 
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:672) 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:793) 

que se debe a una excepción bloqueo optimista. Puedo abordar la causa raíz de esto.

Mi pregunta es - en este escenario - el manejo de excepciones establece la conexión de la base de datos a 'cerrado'. (Lo cual causa problemas con mi grupo de conexiones).

¿Cuál es el patrón para manejar una excepción de base de datos como HibernateOptimisticLockingFailureException que surge durante la primavera e hiberna y devuelve una conexión cerrada?

¿Conoce la parte en el código de Spring/Hibernate que establece la conexión a cerrado?

Respuesta

4

Hibernate Docs indican claramente que si cualquier excepción ocurre durante el trabajo con la sesión, la sesión no se puede reutilizar después. Además, cada sesión puede abarcar varias transacciones y después de que cada transacción se comprometa, sucede lo mismo, la conexión se cierra.

Pero mientras se utiliza un conjunto de conexiones, la conexión no se cierra, literalmente, cuando se invoca el método close(), el connection is returned to the pool without physical closing:

cuando una aplicación se cierra la conexión, la conexión física subyacente se recicla en vez que estar cerrado.

Así que si usted tiene problemas con la conexión de estar físicamente cerrado, preferiría prestar más atención a la piscina, no de hibernación o de primavera - que no pueden hacer más que invocar close() que debe trabajar como yo descrito anteriormente.

+0

Fantástico - ¿podría agregar un enlace a los documentos? – hawkeye

+0

Hecho, si no es suficiente, dame un grito de nuevo :) –

Cuestiones relacionadas