2012-08-03 96 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查询)。