2012-08-03 140 views

回答

4

您可以簡單地打開Hibernate中的SQL日誌記錄並查看它生成的查詢。具體來說,設置該屬性:

hibernate.show_sql=true 

編輯:如果根據您啓動服務器的方式stdout是不提供給你,然後你要改變Hibernate日誌配置打印SQL調試日誌。將此行添加到您的log4j屬性文件中。

log4j.logger.org.hibernate.SQL=DEBUG 
+0

您還可以將'org.hibernate.SQL'的日誌記錄級別設置爲DEBUG。 – 2012-08-03 12:07:04

+0

謝謝,如果我在hibernate.cfg中添加這個之後,我運行單元測試仍然不打印日誌。 – NPKR 2012-08-03 12:20:10

+0

你如何啓動你的服務器?如果stdout不適用於您,您將看不到日誌。在這種情況下,@ Piotr設置hibernate日誌級別爲sqls進行調試的想法會有所幫助。 – 2012-08-03 12:25:29

3

您還可以使用各種記錄器。

<!-- Log all SQL DML statements as they are executed --> 
<logger name="org.hibernate.SQL" level="debug" /> 
<!-- Log all JDBC parameters --> 
<logger name="org.hibernate.type" level="debug" /> 
<!-- Log all second level cache activity --> 
<logger name="org.hibernate.cache" level="debug" /> 
<!-- Log all transaction related activity --> 
<logger name="org.hibernate.transaction" level="debug" /> 
<!-- Log everything --> 
<logger name="org.hibernate" level="debug" /> 
0

正如其他人所說的,hibernate的hibernate.show_sql屬性可以記錄Hibernate執行的SQL查詢。

對於交互式查詢,有EclipseIntelliJ IDEA的Hibernate控制檯插件可讓您輸入HQL查詢並執行它們。

請注意,這是一個非常有用的技術,用於瞭解是否需要執行HQL查詢的優化(即,您想要查看是否正在使用適當的索引運行您的HQL查詢)。