https://docs . JBoss . org/hibernate/ORM/5.2/javadocs/org/hibernate/interceptor . html说onPrepareStatement(字符串sql)不推荐使用。如果希望检查和修改SQL语句,请提供StatementInspector。
但是我不清楚如何在hibernate中在应用程序级别配置StatementInspector(我不想在每个Hibernate会话级别设置它)。
您可以在Spring中使用< code > hibernateproperties customizer
@Configuration
public class HibernateConfig {
@Bean
public HibernatePropertiesCustomizer configureStatementInspector() {
return (properties) -> properties.put(AvailableSettings.STATEMENT_INSPECTOR, (StatementInspector) sql -> {
// figure out what to return
return sql;
});
}
}
注册< code>StatementInspector的最佳方法是使用< code > hibernate . session _ factory . statement _ inspector 配置属性。
这样,无论您是使用JPA(例如Spring Data JPA)还是原生Hibernate(例如Spring with < code > hibernatetransactionmanager 和< code > LocalSessionFactoryBean )来引导Hibernate,都没有关系。
因此,您可以通过persistence.xml
JPA配置文件提供hibernate.session__inspector
:
<property
name="hibernate.session_factory.statement_inspector"
value="com.vladmihalcea.book.hpjp.hibernate.logging.inspector.SqlCommentStatementInspector"
/>
或者,如果您使用的是 Spring,您也可以以编程方式设置 hibernate.session_factory.statement_inspector
:
@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;
}
请注意,<code>hibernate.session_factory。statement_inspector设置可以采用表示实现StatementInspector
接口的完全限定类的String
、类
我试图创建一个springmvc项目配置与Hibernate使用web.xml 我的问题是,当我运行时,它不会自动创建用户表。 这是我的代码: 文件spring-config.xml 文件web.xml: 文件UserDAO: 文件UserDaoImpl: 文件用户: 这是我的日志:
Oracle正在转向通用连接池(UCP),用于维护可以借用、返回或关闭的池连接。我的webapplication在它自己的数据层中就有了这一点。这个应用程序将迁移到使用Hibernate的JPA。此时,我只能将Hibernate配置为使用Oracle JDBC驱动程序。
我正在尝试设置一个SpringMVC Hibernate WAR,用于部署到Jboss 7.1.1Final。我的应用程序使用Hibernate 3.6.1 我遵循了在JBoss中设置Hibernate 3所需的所有步骤。 > 转到 AS 安装并切换到模块/组织文件夹。 为插槽 3 创建了用于保存Hibernate 3 的文件夹 将Hibernate 3 罐子复制到这个新的 AS/模块/组织/冬眠
问题内容: 我不想在我的java源代码中进行配置,可以像这样完成: 因为我希望它是可配置的。 我不使用hibernate.properties,而仅使用persistence.xml,就像我使用JPA一样。我怎样才能使作为使用的所有实体只? 问题答案: 您正在将JPA标准与Hibernate实现一起使用。在这种情况下,您尝试配置特定于Hibernate实现的内容,而不是JPA标准的一部分。如果它是
问题内容: 这是MySQL的配置文件: 为SQL Server 2005指定什么?我这样做是这样的: 我的问题更确切地说是如何指定必须连接的数据库? 在MySQL中,我曾经这样做: 问题答案: 特定于数据库的 属性是: :JDBC驱动程序类 :JDBC URL :数据库用户 :数据库密码 :Hibernate的类名,它允许Hibernate生成针对特定关系数据库优化的SQL。 要更改数据库,您必须
Hibernate 3. x使用slf4j进行日志记录。Hibernate 4. x使用jboss日志记录。我正在编写一个使用Hibernate 4和SLF4J进行日志记录的独立应用程序。 如何配置Hibernate以登录到SLF4J? 如果这不可能,我如何配置Hibernate的日志记录? Hibernate 4.1关于日志记录的手动部分以警告开始,它是。。。 完全过时了。Hibernate从4