2011-02-01 30 views
1
<persistence-unit name="acmDB" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>acm20-ds</jta-data-source> 
     <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/> 
     <property name="hibernate.hbm2ddl.auto" value="update"/> 
     <property name="hibernate.show_sql" value="false"/> 
     <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> 
     <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup"/>   
     </properties> 
    </persistence-unit> 

有时候我设置hibernate.show_sql为true休眠/缝:hibernate.show_sql设置

但后来我不得不再次重新启动应用程序服务器。我正在使用Weblogic 10和JRebel。

是否有可能设置hibernate.show_sql为true,代码在我需要它的位置?

+0

以供将来参考,请参阅此回答有关如何从一个特定的查询得到的SQL。这可能是矫枉过正这个特定的问题,但它是我发现捕捉到SQL和领带回个人HQL,标准或方法调用的最佳方式。 http://stackoverflow.com/questions/554481/how-to-get-sql-from-hibernate-criteria-api-not-for-logging/555192#555192 – 2011-12-08 16:27:31

回答

2

你可以配置Hibernate通过现有的记录设备,如Log4j的执行日志记录,看3.5. Logging。在这种情况下,您可以使用日志记录功能来控制运行时日志级别的Hibernate日志类别。

例如,在Log4j的:

//Enable SQL logging 
Logger.getLogger("org.hibernate.type").setLevel(Level.DEBUG); 

//Disable SQL logging 
Logger.getLogger("org.hibernate.type").setLevel(Level.OFF); 
+0

或很可能在`log4j.xml` – 2011-02-01 10:22:39