Hibernate show real SQL [duplikat]
To pytanie ma już odpowiedź tutaj:
If I set
<property name="show_sql">true</property>
W mojej hibernacji.cfg.plik konfiguracyjny XML w konsoli widzę SQL.
Ale to nie jest prawdziwy SQL... Czy Mogę zobaczyć kod SQL, który zostanie przekazany bezpośrednio do bazy danych?
Przykład:
Widzę
select this_.code from true.employee this_ where this_.code=?
Can I see
select employee.code from employee where employee.code=12
The real SQL?
5 answers
Can I see (...) the real SQL
Jeśli chcesz zobaczyć SQL wysyłany bezpośrednio do bazy danych (która jest sformatowana podobnie jak do twojego przykładu), musisz użyć jakiegoś proxy sterownika jdbc, takiego jak p6spy (lub log4jdbc).
Alternatywnie możesz włączyć rejestrowanie następujących kategorii (używając pliku log4j.properties
tutaj):
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
Pierwszy jest odpowiednikiem hibernate.show_sql=true
, drugi wyświetla powiązane parametry między innymi rzeczy.
Odniesienie
- Dokumentacja Rdzenia Hibernate 3.5
- Dokumentacja Rdzenia Hibernate 4.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-28 11:33:33
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
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
Wytrwałość.xml
Niektóre frameworki używają persistence.xml
:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-11 17:49:48
Jeśli widzisz już wydrukowany SQL, oznacza to, że masz poniższy kod w hibernate.cfg.xml:
<property name="show_sql">true</property>
Aby wydrukować parametry bind, Dodaj do pliku log4j. properties:
log4j.logger.net.sf.hibernate.type=debug
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 12:51:47
Warto zauważyć, że kod, który widzisz, jest wysyłany do bazy danych w takim stanie, w jakim jest, zapytania są wysyłane oddzielnie, aby zapobiec wtrysku SQL. AFAIK ? znaczniki są elementami zastępczymi, które są zastępowane przez paramy liczb w bazie danych, a nie przez hibernate.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-06 21:11:50
select this_.code from true.employee this_ where this_.code=?
jest {[5] } co zostanie wysłane do twojej bazy danych.
this_
jest aliasem dla tej instancji tabeli employee
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 09:49:12