2012-09-29 39 views
19

Tôi đang tìm thiết lập hibernate hoặc log4j để hiển thị cho tôi, các truy vấn được thực hiện trong hibernate trong bao lâu, được gọi bởi hql.hibernate hiển thị thời gian truy vấn thực hiện

Cho đến bây giờ tôi không tìm thấy bất kỳ điều gì thú vị.

Có thể một số bạn có thể giúp tôi giải quyết vấn đề này?

Trả lời

2

Nếu bạn muốn có một giải pháp tùy chỉnh, bạn có thể sử dụng AOP và thêm một lời khuyên xung quanh xung quanh lớp phiên ngủ đông nếu bạn đang thực hiện truy vấn gốc.

22

Có một cách đơn giản (được xây dựng trong hibernate) để đạt được điều đó. Nó đã được sửa bởi HHH-3659 trong 3.5.43.6.0.Beta1.

Để đi cho nó, sử dụng:

  • ghi trên bao bì: org.hibernate.stat ít nhất là trên INFO
  • bộ ngủ đông sở hữu: hibernate.generate_statistics=true

Sau đó tất cả các SQL s sẽ được đăng nhập bao gồm số lượng hàng được tìm nạp và thời gian thực hiện truy vấn.

Hơn nữa, nếu quan tâm, nó cung cấp số liệu thống kê về truy vấn. Để có họ tiếp xúc qua JMX và xem chúng bằng cách sử JConsole, bạn có thể sử dụng Hibernate JConsole plugin, có sẵn trên: http://hibernate-jcons.sourceforge.net/

+6

Hi Peter, Nó làm việc cho tôi nhưng tôi đã phải thay đổi mức độ của log4j để theo dõi trên org.hibernate.stat để có được điều đó đang làm việc. Cảm ơn vì giải pháp của bạn –

+1

Điều đó phù hợp với tôi! Trong logback.xml: Trong hibernate.properties: hibernate.generate_statistics = true – formica

+0

Nó hoạt động cho các truy vấn JDBC được gửi bởi org.hibernate.loader. Trình tải, nhưng không phải những trình được gửi bởi org.hibernate.jdbc.AbstractBatcher (tải chậm). Giải pháp đơn giản nhất là định cấu hình ghi nhật ký DEBUG cho "org.hibernate. *" Và xem truy vấn nào được thực hiện tại dấu thời gian nhật ký nào. – metatechbe

Các vấn đề liên quan