gpt4 book ai didi

sql - 如何使用 Hibernate 在连接/ session 开始时针对数据库运行 SQL SET 语句?

转载 作者:行者123 更新时间:2023-12-02 07:30:49 26 4
gpt4 key购买 nike

我想在(数据库) session 开始时向数据库发送一些 SQL。

例如 SET TIME ZONE 'user-timezone',或者将他们的客户端 IP 地址设置为自定义变量(postgres 中的“GUC”)。

如何在 Hibernate 中自动执行此操作?

EclipseLink 有一个 postAcquireClientSession 事件,但我没有看到一个与 Hibernate 相关的事件。

最佳答案

更简单的方法是实现自定义 org.hibernate.service.jdbc.connections.spi.ConnectionProvider 提供了一个示例 here并覆盖 getConnection,以便它运行您的 SQL。

其他更复杂且可能有效或无效的方法包括使用 Integrators 设置事件监听器,这些监听器在错误的级别监听并在以下 Stack Overflow question 中列出。 .有关集成商的信息,请访问 here。 .

像事件监听器这样的拦截器也会在错误的级别进行监听。其中一个例子是 here

其他更复杂的方法是子类化 SessonFactory 实现,以允许您查看自定义统计信息提供程序,如果启用统计信息,它将作为 JDBCContext 中 connectionOpened 回调的一部分被调用。

或者您可以子类化 SessonFactory 实现和 JDBC 上下文实现或 session 实现,以便自定义相同的 connectionOpened 回调来运行您的 SQL。

关于sql - 如何使用 Hibernate 在连接/ session 开始时针对数据库运行 SQL SET 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com