gpt4 book ai didi

java - 如何在 GenericDao 中检索常用值(IpAddress、TenantId)?

转载 作者:搜寻专家 更新时间:2023-10-30 21:35:12 26 4
gpt4 key购买 nike

我们正在使用 Play! HTTP session 的框架。

tenantIdipAddress 是多个表中通用的列。

当用户登录时,我们将 tenantId 存储在 HttpContextSession

每当我们需要用户的 ip 地址时,我们都会使用 Http.Context.current().request().remoteAddress() 来存储 ip 地址。

我们编写了大量查询,现在我们想以通用方式保存或查询 tenantId

所有查询都通过 GenericDao 进行

我们可以在 GenericDao 中使用以下内容来获取租户 ID,以便我们可以追加所有查询吗?

Http.Context.session().get("tenantId");

保存或检索这些详细信息的最佳方法是什么?

谢谢。

最佳答案

您不希望您的 DAO 必须依赖于表示层,例如 HTTP session 。我会推荐一个抽象来隐藏这些细节。

创建一个名为 TenantIdProvider 的接口(interface)并将其注入(inject)到您的 DAO 中。它看起来像这样:

public interface TenantIdProvider
{
String getTenantId();
}

然后创建一个名为 HttpSessionTenantIdProvider 的实现。

class HttpSessionTenantIdProvider implements TenantIdProvider
{
@Override
public String getTenantId()
{
return Http.Context.session().get("tenantId");
}
}

现在您的 GenericDAO 可以引用 TenantIdProvider,每个需要 tenantId 的查询都可以通过 TenantIdProvider 获取它,而不依赖于 Play Framework 或您使用的任何其他表示层。

如果您最终拥有运行和发送通知或其他一些任务的计划作业,并且它们使用此 DAO,那么这真的很重要。如果这个 DAO 依赖于 HTTP session ,那将是不可能的。您的工作应用程序可以创建一个刚刚返回“系统”或类似内容的 TenantIdProvider。

关于java - 如何在 GenericDao 中检索常用值(IpAddress、TenantId)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39471925/

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