gos*_*in1 3 java sql hibernate jdbc inspect
https://docs.jboss.org/hibernate/orm/5.2/javadocs/org/hibernate/Interceptor.html 表示 onPrepareStatement(String sql) 已弃用。如果您希望检查和更改 SQL 语句,请改为提供 StatementInspector。
但我不清楚如何在应用程序级别的 Hibernate 中配置 StatementInspector (我不想在每个 Hibernate 会话级别设置它)。
注册 a 的最佳方法StatementInspector是使用hibernate.session_factory.statement_inspector配置属性。
HibernateTranscationManager这样,无论您是使用 JPA(例如 Spring Data JPA)还是本机 Hibernate(例如带有和 的Spring LocalSessionFactoryBean)引导 Hibernate 都无关紧要。
hibernate.session_factory.statement_inspector因此,您可以通过JPA 配置文件提供persistence.xml:
<property
name="hibernate.session_factory.statement_inspector"
value="com.vladmihalcea.book.hpjp.hibernate.logging.inspector.SqlCommentStatementInspector"
/>
Run Code Online (Sandbox Code Playgroud)
或者,hibernate.session_factory.statement_inspector如果您使用 Spring,您也可以以编程方式设置:
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan({
"com.vladmihalcea.books.high.performance.java.persistence"
});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public PlatformTransactionManager hibernateTransactionManager() {
HibernateTransactionManager transactionManager
= new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
private final Properties hibernateProperties() {
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty(
"hibernate.session_factory.statement_inspector",
SqlCommentStatementInspector.class
);
hibernateProperties.setProperty(
"hibernate.dialect",
"org.hibernate.dialect.H2Dialect"
);
return hibernateProperties;
}
Run Code Online (Sandbox Code Playgroud)
请注意,该hibernate.session_factory.statement_inspector设置可以采用String表示实现接口的完全限定类StatementInspector、Class<? extends StatementInspector>或StatementInspector对象引用。
HibernatePropertiesCustomizer您可以在春季使用
@Configuration
public class HibernateConfig {
@Bean
public HibernatePropertiesCustomizer configureStatementInspector() {
return (properties) -> properties.put(AvailableSettings.STATEMENT_INSPECTOR, (StatementInspector) sql -> {
// figure out what to return
return sql;
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7019 次 |
| 最近记录: |