設定すれば
<property name="show_sql">true</property>
私の hibernate.cfg.xml configurationファイルのコンソールでSQLを見ることができます。
real SQLではありません...データベースに直接渡されるSQLコードを見ることができますか?
例:
そうですか
select this_.code from true.employee this_ where this_.code=?
を見せていただけますか
select employee.code from employee where employee.code=12
本当の SQL?
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
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
いくつかのフレームワークはpersistence.xml
を使います:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
SQLがすでに印刷されていることが確認できれば、hibernate.cfg.xmlに以下のコードがあることになります。
<property name="show_sql">true</property>
バインドパラメータも印刷するには、log4j.propertiesファイルに以下を追加します。
log4j.logger.net.sf.hibernate.type=debug
表示されているコードはそのままデータベースに送信されるので、SQLインジェクションを防ぐためにクエリは別々に送信されます。ご存知ですか?マークは、休止状態ではなくデータベースによって番号paramsに置き換えられるプレースホルダーです。
select this_.code from true.employee this_ where this_.code=?
is あなたのデータベースに送られるもの。
this_
はemployee
テーブルのそのインスタンスのエイリアスです。