Hibernate montre le vrai SQL

si je règle

true 

Dans mon fichier de configuration hibernate.cfg.xml dans la console, je peux voir le SQL.

Mais ce n’est pas du vrai SQL … Puis-je voir le code SQL qui sera transmis directement à la firebase database?

Exemple:

je vois

 select this_.code from true.employee this_ where this_.code=? 

Puis-je voir

 select employee.code from employee where employee.code=12 

le vrai SQL?

Puis-je voir (…) le vrai SQL

Si vous voulez voir le SQL envoyé directement à la firebase database (formaté comme votre exemple), vous devrez utiliser un proxy de pilote jdbc tel que P6Spy (ou log4jdbc ).

Vous pouvez également activer la journalisation des catégories suivantes (en utilisant un fichier log4j.properties ici):

 log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE 

Le premier est équivalent à hibernate.show_sql=true , le second imprime entre autres les parameters liés.

Référence

  • Documentation Hibernate 3.5 Core
    • 3.5. Enregistrement
  • Documentation Hibernate 4.1 Core
    • 4.1. Enregistrement

log4j.properties

 log4j.logger.org.hibernate=INFO, hb log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE log4j.logger.org.hibernate.hql.ast.AST=info log4j.logger.org.hibernate.tool.hbm2ddl=warn log4j.logger.org.hibernate.hql=debug log4j.logger.org.hibernate.cache=info log4j.logger.org.hibernate.jdbc=debug log4j.appender.hb=org.apache.log4j.ConsoleAppender log4j.appender.hb.layout=org.apache.log4j.PatternLayout log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n log4j.appender.hb.Threshold=TRACE 

hibernate.cfg.xml

 true true true 

persistence.xml

Certains frameworks utilisent persistence.xml :

    

Si vous voyez déjà le code SQL en cours d’impression, cela signifie que vous avez le code ci-dessous dans votre fichier hibernate.cfg.xml:

 true 

Pour imprimer également les parameters de liaison, ajoutez ce qui suit à votre fichier log4j.properties:

 log4j.logger.net.sf.hibernate.type=debug 

Il convient de noter que le code que vous voyez est envoyé à la firebase database en l’état, les requêtes sont envoyées séparément pour empêcher l’injection SQL. AFAIK Le? les marques sont des espaces réservés qui sont remplacés par les parameters num par la firebase database, et non par mise en veille prolongée.

select this_.code from true.employee this_ where this_.code=? est ce qui sera envoyé à votre firebase database.

this_ est un alias pour cette instance de la table employee .