H2のログを出す
URLをこんな感じにします。以下はインメモリで起動したときでの例。
jdbc\:h2\:mem\:test;DB_CLOSE_DELAY\=-1;TRACE_LEVEL_FILE\=4
O/Rマップとか使用していると、どうしても実際に発行されているSQLがみたくなります。Hibernate側でもSQLを出力したり出来ますが、プリペアド・ステートメントを使用しているかなのかちょっとわかりませんが、SQLの一部が?とかなってしまいます。H2側で出力するとこのあたいも見れます。ただし、かなり大量にログができます。
... 2011-03-27 17:29:31,113 ["http-bio-8080"-exec-9] DEBUG h2database - jdbc[3] /**/PreparedStatement prep1 = conn1.prepareStatement("SELECT username, role as authority FROM user WHERE username = ?"); 2011-03-27 17:29:31,113 ["http-bio-8080"-exec-9] DEBUG h2database - jdbc[3] /**/prep1.setString(1, "yamkazu"); 2011-03-27 17:29:31,113 ["http-bio-8080"-exec-9] DEBUG h2database - jdbc[3] /**/ResultSet rs42 = prep1.executeQuery(); 2011-03-27 17:29:31,113 ["http-bio-8080"-exec-9] INFO h2database - jdbc[3] /*SQL l:63 #:1*/SELECT username, role as authority FROM user WHERE username = ? {1: 'yamkazu'}; ...
出力にはslf4jが使われています。
http://www.h2database.com/html/features.html#logging_recovery
DEBUGだと大量にでるので、ロガー側の設定で出力レベルを調整するといいかもしません。