我正在尝试编写在执行查询之前检查用户权限的行级策略。在这种情况下,我需要能够在从连接池中获取连接时设置一个包含用户标识符的会话变量,并在将连接返回池时取消设置/释放相同的会话变量。以下博客可能会提供一个很好的背景来解释我正在尝试做的事情:https ://blog.2ndquadrant.com/application-users-vs-row-level-security/
在我的设置中,我有以下层:
- 光:
HikariDataSource
- Spring:(
TransactionAwareDataSourceProxy
使用Hikari数据源),DataSourceTransactionManager
(使用Hikari数据源) - jOOQ:(
DataSourceConnectionProvider
使用 Spring 数据源),DefaultDSLContext
前两层仅供内部使用。也就是说,应用程序中的所有查询都是通过最后一层 jOOQ 完成的。
所以,我需要能够在连接take from pool
和give back to pool
.
我一直在查看 Hikari 和 Spring 的文档,但找不到任何有用的东西。这可能是我的第一个问题:Hikari 和/或 Spring 是否提供这样的回调?
我调查的下一步是 jOOQ。我偶然发现ExecuteListener
。这是我的后续问题:这会ExecuteListener
是一个很好的应用程序吗?这并没有实现连接被取回并返回的实际点,但execution context
在我的情况下可能已经足够好了(因为我所有的查询都是在 jOOQ 中完成的)?如果是这样,我应该实现start
andend
功能吗?