Java 如何在GenericDao中检索公共值(IpAddress、TenantId)?
我们正在使用该剧!HTTP会话的框架Java 如何在GenericDao中检索公共值(IpAddress、TenantId)?,java,playframework,playframework-2.0,genericdao,Java,Playframework,Playframework 2.0,Genericdao,我们正在使用该剧!HTTP会话的框架 tenantId和ipAddress是跨多个表通用的列 当用户登录时,我们将tenantId存储在HttpContextSession 每当我们需要用户的ip地址时,我们都使用Http.Context.current().request().remoteAddress()来存储ip地址 我们编写了大量查询,现在我们希望以一种通用的方式保存或查询tenantId 所有查询都通过GenericDao进行 我们是否可以在GenericDao中使用以下命令来获取租户
tenantId
和ipAddress
是跨多个表通用的列
当用户登录时,我们将tenantId
存储在HttpContextSession
每当我们需要用户的ip地址时,我们都使用Http.Context.current().request().remoteAddress()
来存储ip地址
我们编写了大量查询,现在我们希望以一种通用的方式保存或查询tenantId
所有查询都通过GenericDao进行
我们是否可以在GenericDao中使用以下命令来获取租户Id,以便在所有查询中追加
Http.Context.session().get("tenantId");
保存或检索这些详细信息的最佳方法是什么
谢谢。您不希望DAO必须依赖于表示层,比如HTTP会话。我建议使用抽象来隐藏这些细节 创建一个名为TenantIdProvider的接口,并将其注入DAO。它看起来像这样:
public interface TenantIdProvider
{
String getTenantId();
}
然后创建一个名为HttpSessionTenantProvider的实现
class HttpSessionTenantIdProvider implements TenantIdProvider
{
@Override
public String getTenantId()
{
return Http.Context.session().get("tenantId");
}
}
现在,您的GenericDAO可以引用tenantId提供程序,并且每个需要tenantId的查询都可以通过tenantId提供程序获得它,而不依赖于play框架或您使用的任何其他表示层
如果您最终拥有运行并发送通知或其他任务的计划作业,并且它们使用此DAO,那么这一点就变得非常重要。如果此DAO依赖于HTTP会话,则不可能。你的求职应用程序可以创建一个只返回“系统”或类似内容的租户服务提供商
50
rep不会给你一个离题/过于宽泛/基于观点的答案,这个答案很可能在悬赏期满后立即关闭并删除。你没有提供Play Framework的版本,1.x和2.x有显著不同。2.x版本是正在使用的当前版本