サーチ…


備考

これらのクエリのロギングは遅く 、通常はHibernateよりも遅いです。また、大量のログ領域を消費します。パフォーマンスが必要なシナリオでは、ログを使用しないでください。これは、Hibernateが実際に生成するクエリをテストする場合にのみ使用してください。

ロギング設定ファイルの使用

ロギング設定ファイルでは、次のパッケージのロギングを次のレベルに設定します。

# log the sql statement
org.hibernate.SQL=DEBUG
# log the parameters
org.hibernate.type=TRACE

おそらくいくつかのロガー固有の接頭辞が必要です。

Log4j設定:

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

Springブートapplication.properties

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

logback.xml

<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.type" level="TRACE"/>

Hibernateプロパティの使用

これにより生成されたSQLは表示されますが、クエリに含まれる値は表示されません。

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="hibernateProperties">
        <props>
            <!-- show the sql without the parameters -->
            <prop key="hibernate.show_sql">true</prop>
            <!-- format the sql nice -->
            <prop key="hibernate.format_sql">true</prop>
            <!-- show the hql as comment -->
            <prop key="use_sql_comments">true</prop>
        </props>
    </property>
</bean>

デバッグでSQLログを有効/無効にする

Hibernateを使用する一部のアプリケーションは、アプリケーションの起動時に膨大な量のSQLを生成します。場合によっては、デバッグ時に特定のポイントでSQLログを有効/無効にする方がよい場合もあります。

有効にするには、アプリケーションをデバッグするときにIDEでこのコードを実行します。

org.apache.log4j.Logger.getLogger("org.hibernate.SQL")
    .setLevel(org.apache.log4j.Level.DEBUG)

無効にするには:

org.apache.log4j.Logger.getLogger("org.hibernate.SQL")
    .setLevel(org.apache.log4j.Level.OFF)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow