2012-09-29 16 views
19

Stavo cercando il setup hibernate o log4j per mostrarmi, per quanto tempo vengono eseguite le query in hibernate, che vengono invocate da hql.hibernate mostra il tempo di esecuzione della query

Fino ad ora non ho trovato nulla di interessante.

Forse qualcuno di voi potrebbe aiutarmi con questo problema?

risposta

2

Se si desidera una soluzione personalizzata, è possibile utilizzare l'AOP e aggiungere un consiglio intorno attorno alla classe sessione di Hibernate se si sta eseguendo query native.

22

C'è un modo semplice (integrato in hibernate) per raggiungerlo. È stato corretto da HHH-3659 in 3.5.4 e 3.6.0.Beta1.

di andare per esso, utilizzare:

  • registrazione sulla confezione: org.hibernate.stat almeno su INFO e
  • set ibernazione proprietà: hibernate.generate_statistics=true

In seguito tutte le SQL s verranno registrati incluso il conteggio delle righe recuperato e il tempo di esecuzione della query.

Inoltre, se interessato, fornisce statistiche sulle query. Per averli esposti tramite JMX e vederli utilizzando JConsole, è possibile utilizzare Hibernate JConsole plugin, disponibile su: http://hibernate-jcons.sourceforge.net/

+6

Ciao Peter, ha funzionato per me, ma ho dovuto cambiare il livello del log4j per tracciare sul org.hibernate.stat per ottenere che lavoro. Grazie per la tua soluzione –

+1

Che ha funzionato per me! In logback.xml: In hibernate.properties: hibernate.generate_statistics = true – formica

+0

Funziona per le query JDBC inviate da org.hibernate.loader. Caricatore, ma non quelli inviati da org.hibernate.jdbc.AbstractBatcher (caricamento lazy). La soluzione più semplice era configurare la registrazione su DEBUG per "org.hibernate. *" E vedere quale query è eseguita a quale timestamp del registro. – metatechbe

Problemi correlati