gpt4 book ai didi

java - 如何使用 hibernate 管理具有许多数据库角色(用户)的 webapp?

转载 作者:行者123 更新时间:2023-11-29 12:10:49 26 4
gpt4 key购买 nike

如果我们有一个运行着许多数据库角色(代表用户)的 Postgres 数据库并且想要使用 hibernate 以便每个数据库语句都将使用特定用户获取的连接来执行,如何处理这种情况?

要获取 Session/EntityManager,我们需要从 EntityManagerFactory 获取它,这需要数据库用户/密码,通常在persistence.xml 像这样:

<property name="javax.persistence.jdbc.user" value="SYSDBA"/>
<property name="javax.persistence.jdbc.password" value="masterkey"/>

当然,我可以使用单独的 EntityManagerFactory 为每个用户创建一个 Session/EntityManager,但这是一项代价高昂的操作。如何解决这个问题?

最佳答案

如果 RDBMS 是 PostgreSQL,我认为实现此目的的最佳方法是调用 SET ROLE 命令。此命令会将角色和权限更改为指定的任何角色。它将在 session 期间执行所有 SQL 命令,就像您在开始时以该角色登录一样。

Here is a link to the Postgres documentation.

关于java - 如何使用 hibernate 管理具有许多数据库角色(用户)的 webapp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36270222/

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