2012-09-29 17 views
19

Estaba buscando la configuración hibernate o log4j para mostrarme, cuánto tiempo se ejecutan las consultas en hibernación, que son invocadas por hql.hibernate mostrar el tiempo de ejecución de la consulta

Hasta ahora no he encontrado nada interesante.

Quizás algunos de ustedes me ayuden con este problema?

Respuesta

2

Si desea una solución personalizada, puede utilizar el AOP y añadir un consejo en torno a la vuelta de la clase de sesión de hibernación si se está ejecutando consultas nativas.

22

Hay una manera simple (construida en hibernate) para lograrlo. Fue arreglado por HHH-3659 en 3.5.4 y 3.6.0.Beta1.

ir a por ello, utilizar:

  • registro en el paquete: org.hibernate.stat al menos en INFO y
  • conjunto hibernación propiedad: hibernate.generate_statistics=true

Después todo se registrarán los SQL s incluyendo el conteo de filas obtenido y el tiempo que tomó la ejecución de la consulta.

Además, si está interesado, proporciona estadísticas sobre consultas. Tenerlos expuestos a través de JMX y verlos utilizando JConsole, puede utilizar Hibernate JConsole plugin, disponible en: http://hibernate-jcons.sourceforge.net/

+6

Hola Pedro, funcionó para mí, pero tuve que cambiar el nivel del log4j para rastrear en org.hibernate.stat para conseguir ese trabajando. Gracias por su solución –

+1

¡Eso funcionó para mí! En logback.xml: En hibernate.properties: hibernate.generate_statistics = true – formica

+0

Funciona para consultas JDBC enviadas por org.hibernate.loader. Loader, pero no los enviados por org.hibernate.jdbc.AbstractBatcher (carga diferida). La solución más fácil fue configurar el inicio de sesión en DEPURACIÓN para "org.hibernate. *" Y ver qué consulta se ejecuta en qué registro de marca de tiempo. – metatechbe

Cuestiones relacionadas