- Hibernateのログレベルを設定する方法: Hibernateは、内部のSQL操作を記録するためにロギングフレームワークを使用します。Spring BootでHibernateのログレベルを設定するには、以下の手順を実行します。
application.propertiesファイルに以下の設定を追加します:
# Hibernateのログレベルを設定
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
この設定により、HibernateはSQLクエリとバインドパラメータの詳細なログを出力します。
- Spring Bootの統合ログ設定を使用する方法: Spring Bootでは、統合ログ設定を使用してアプリケーション全体のログ出力を制御できます。以下の手順で統合ログ設定を使用してHibernateのSQLログを有効にします。
application.propertiesファイルに以下の設定を追加します:
# 統合ログ設定を使用してHibernateのSQLログを有効にする
logging.level.root=INFO
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
これにより、HibernateのSQLログが出力されますが、他のログも出力されることに注意してください。
- 自前のロギングインターセプターを作成する方法: Spring Bootでは、自前のロギングインターセプターを作成してHibernateのSQLログを記録することもできます。以下に例を示します。
import org.hibernate.resource.jdbc.spi.StatementInspector;
public class SqlLoggingInterceptor implements StatementInspector {
@Override
public String inspect(String sql) {
// SQLログを記録する処理を追加
System.out.println("SQLログ: " + sql);
return sql;
}
}
Hibernateのセッションファクトリを構成する際に、作成したインターセプターを登録します。
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
@Autowired
private EntityManagerFactory entityManagerFactory;
@PostConstruct
public void init() {
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
sessionFactory.getSessionFactoryOptions().setStatementInspector(new SqlLoggingInterceptor());
}
}
これにより、HibernateのSQLクエリが自前のロギングインターセプターによって記録されます。
以上の方法を使用して、Spring BootとHibernateでSQLログを記録することができます。これにより、アプリケーションのパフォーマンスチューニングやデバッグに役立ちます。