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

Parfois, je mis hibernate.show_sql trueMise en veille prolongée/couture: hibernate.show_sql

Mais je dois redémarrer le serveur d'applications. J'utilise Weblogic 10 et JRebel.

Est-il possible de définir hibernate.show_sql à true dans le code à l'emplacement dont j'ai besoin?

+0

Pour référence ultérieure, voir cette réponse sur la façon d'obtenir le SQL d'une requête spécifique. C'est peut-être exagéré pour cette question particulière, mais c'est la meilleure façon que j'ai trouvée de capturer sql et de l'attacher à des appels HQL, Criteria ou méthode individuels. http://stackoverflow.com/questions/554481/how-to-get-sql-from-hibernate-criteria-api-not-for-logging/555192#555192 –

Répondre

2

Vous pouvez configurer Hibernate pour effectuer la journalisation via vos fonctions de journalisation existantes telles que Log4j, voir 3.5. Logging. Dans ce cas, vous pouvez contrôler le niveau de journalisation des catégories de journalisation Hibernate à l'exécution avec vos fonctions de journalisation.

Par exemple, dans Log4j:

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

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

Ou probablement dans 'log4j.xml' –

+0

@Shervin: Oui, mais en le modifiant, vous devrez redémarrer l'application, ce que vous voulez éviter. – axtavt

+0

Est-ce seulement weblogic? Parce que dans JBoss vous n'avez pas besoin de redémarrer l'application. JBoss ramassera les changements après un certain temps –