Nei*_*gan 2 sql events hibernate
我想在(数据库)会话开始时向数据库发送一些SQL.
例如SET TIME ZONE 'user-timezone',或将其客户端IP地址设置为自定义变量(postgres中的"GUC").
如何在Hibernate中自动执行此操作?
EclipseLink有一个postAcquireClientSession事件,但我没有看到一个Hibernate.
更简单的方法是实现自定义org.hibernate.service.jdbc.connections.spi.ConnectionProvider,此处提供了一个示例并覆盖getConnection,以便它运行您的SQL.
其他方法更混乱,可能或可能不起作用包括使用集成器来设置事件监听器,它们在错误的级别监听并列在下面的Stack Overflow问题中.有关集成商的信息,请点击此处.
像Event Listeners这样的拦截器也会听错.其中的一个例子是在这里
其他更复杂的方法是继承SessonFactory实现,以允许您查看自定义统计信息提供程序,如果启用了统计信息,该提供程序将作为JDBCContext中connectionOpened回调的一部分进行调用.
或者,您可以将SessonFactory实现和JDBC上下文实现或会话实现子类化,以便自定义相同的connectionOpened回调来运行SQL.
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |