発行されるSQLを確認する
最終更新日: 2021年3月11日
R8 | R9
log4j2.xmlに下記の行を追加することで、system.logに実行したSQLが出力されます。
ビルドしたアプリケーションの hibernate.cfg.xml を変更することで、Hibernate が生成する HQL を直接、確認する方法を説明します。
出力されるSQLは次のような形になります。これは正確には、Hibernate が扱う HQL です。
where 句の条件部は '?' となります。実際の値は表示されません。
'?' に値が含まれた SQL は、データベース側のログで確認するようにしてください。
1つの画面操作で発行されるSQL数を把握する方法を説明します。
log4j2.xml
<Logger name="org.hibernate.SQL" level="DEBUG">
<AppenderRef ref="C"/>
<AppenderRef ref="F"/>
</Logger>
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
...
<property name="show_sql">true</property>
...
</session-factory>
</hibernate-configuration>
プレースホルダの扱い
select jgroupid_0_."userid" as userid1_61_0_, jgroupid_0_."jgroupid" as jgroupid2_56_0_, jgroupid_0_."jgroupidjshid" as jgroupid3_0_ from "juser$jgroupid" jgroupid_0_ where jgroupid_0_."userid"=?
ワンポイント
SQL発行数のカウント9.0.0
jp.jasminesoft.jfc.JFCUtils.isOutputStatusToConsole=true
<hibernate-configuration>
<session-factory>
...
<property name="show_sql">true</property>
...
</session-factory>
</hibernate-configuration>
ant analyze-sql
[java] Wagby: 08-30-20 14:39:43 mainMenu
[java] Wagby: 08-30-20 14:39:46 myShowListJfcportal Search_Condition
[java] 08-30-20 14:41:44 mainMenu
[java] 08-30-20 14:41:44 showListJuser
[java] 08-30-20 14:41:50 showListJuser Search_Condition
[java] jfcjobschedule 1
[java] jfcportlet 1
[java] jfcpreferenceitem 1
[java] jprincipal 1
[java] jprincipal$jpermission_id 30
[java] juser 5
[java] juser$jgroupid 1
[java] juser$jprincipal_id 1
[java] juser$preference_item 1
[java] juser$rule 1
[java] 08-30-20 14:43:03 showListJuser
[java] jcategory 1
[java] jgroup 1
[java] jholiday 1
[java] juser 3
[java] juser$jgroupid 4
[java] juser$jprincipal_id 4
[java] juser$old_passwds 4
[java] juser$preference_item 4
[java] juser$rule 4
[java] 08-30-20 14:43:16 showJuser Show:userid:admin
[java] juser 2
[java] juser$jgroupid 3
[java] juser$jprincipal_id 3
[java] juser$old_passwds 3
[java] juser$preference_item 3
[java] juser$rule 3
[java] 08-30-20 14:49:59 showListJuser Send
[java] jgroup 1
[java] juser 1
[java] juser$jgroupid 2
[java] juser$jprincipal_id 2
[java] juser$old_passwds 2
[java] juser$preference_item 2
[java] juser$rule 2
[java] 08-30-20 14:50:11 mainMenu
[java] 08-30-20 14:50:11 ShowListJfcportal
[java] === Total report ===
[java] jcategory 1
[java] jfcjobschedule 1
[java] jfcportal 1
[java] jfcportal$disableDnd 1
[java] jfcportal$usePortal 1
[java] jfcportlet 1
[java] jfcpreferenceitem 1
[java] jgroup 2
[java] jholiday 1
[java] jprincipal 1
[java] jprincipal$jpermission_id 30
[java] juser 11
[java] juser$jgroupid 10
[java] juser$jprincipal_id 10
[java] juser$old_passwds 9
[java] juser$preference_item 10
[java] juser$rule 10
[java] line count=102
[java] totalSize=101
仕様
from XXX
の XXX 名をキーにカウントしています。