2011-02-01 8 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

hibernate.show_sqlを設定するしかし、その後、私は再びアプリケーションサーバーを再起動する必要があります。私はWeblogic 10とJRebelを使用しています。

hibernate.show_sqlを必要な場所のコードでtrueに設定することはできますか?

+0

今後の参考のために、特定のクエリからSQLを取得する方法についてこの回答を参照してください。この特定の質問は残念なことかもしれませんが、SQLをキャプチャして個々のHQL、Criteria、またはメソッド呼び出しに戻すのが最良の方法です。 http://stackoverflow.com/questions/554481/how-to-get-sql-from-hibernate-criteria-api-not-for-logging/555192#555192 –

答えて

2

Log4jなどの既存のロギング機能を使用してロギングを実行するようにHibernateを設定できます(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' –

+0

@Shervin:はい、しかしそれを変更すると、アプリケーションの再起動が必要になります。何を避けたいのですか? – axtavt

+0

これはweblogicのみですか? JBossでは、アプリケーションを再起動する必要がないためです。 JBossがしばらくしてから変更を受け取ります。 –