多个Java类是否可以包含SaaS的GroupAccount对象?

多个Java类是否可以包含SaaS的GroupAccount对象?,java,class,object,account,saas,Java,Class,Object,Account,Saas,我正在用Java构建一个SaaS应用程序。管理者将能够创建一个“GroupAccount”,并在组帐户下面创建用户帐户。我开始意识到,对于应用程序的许多页面,我需要引用这个GroupAccount。我的问题是,多个类是否可以拥有这个GroupAccount对象的私有字段,或者这是一个糟糕的设计 我唯一能想到的另一种方法是让GroupAccount对象成为一个类的私有字段,然后让其他类拥有该类的私有字段,而不是GroupAccount类 然而,对于数据库查询,这意味着我必须执行JOIN语句之类的操

我正在用Java构建一个SaaS应用程序。管理者将能够创建一个“GroupAccount”,并在组帐户下面创建用户帐户。我开始意识到,对于应用程序的许多页面,我需要引用这个GroupAccount。我的问题是,多个类是否可以拥有这个GroupAccount对象的私有字段,或者这是一个糟糕的设计

我唯一能想到的另一种方法是让GroupAccount对象成为一个类的私有字段,然后让其他类拥有该类的私有字段,而不是GroupAccount类


然而,对于数据库查询,这意味着我必须执行JOIN语句之类的操作。让我的大多数类包含GroupAccount字段会容易得多。这样做可以吗?

您重复使用“类”这个词太多了-您在“多个类是否可以拥有此GroupAccount对象的私有字段”中指的是哪些“类”?您指的是页面控制器、用户还是。。。?我会说,如果你有一个页面只能被登录用户访问,那么我会有一个GroupAccountService,它将从上下文中获取该用户的详细信息;然后,它是否访问数据库,和/或连接和/或缓存将只是封装在该服务中的内部实现。用户下订单,订单有任务。所有这些类都可以将GroupAccount对象作为私有字段,或者既然Task也有一个Order对象作为私有字段,GroupAccount应该只是Order类的私有字段吗?一般来说,这种“冗余”是要避免的,相反,DRY原则适用-例如,如果我有一个客户订单,那么订单行也不应该有对客户的引用。一如既往,可能会有特殊情况,但从正确的原则开始,最终会减少痛苦。谢谢你的帮助。所以据我所知,在这些类中根本不需要GroupAccount私有字段?我可以在需要时实例化一个GroupAccount对象,因为我的数据库在GroupAccounts表的所有表中都有一个外键?您的数据库当然不应该有冗余的属性/列(请查看“第三个正常表单”)。如果表有一个看似冗余的引用,那么您需要确定原因。例如,扩展我之前的类比,如果Order和Orderline表都有一个Address列,那么它在Orderline上功能上是否需要(例如某些项目被允许在其他地方装运),或者不需要(例如可能是性能“非标准化”的,或者可能只是糟糕的设计!)。您的Java类需要从数据库镜像功能需求。您重复使用“类”这个词太多了-您在“多个类是否可以拥有此GroupAccount对象的私有字段”中指的是哪些“类”?您指的是页面控制器、用户还是。。。?我会说,如果你有一个页面只能被登录用户访问,那么我会有一个GroupAccountService,它将从上下文中获取该用户的详细信息;然后,它是否访问数据库,和/或连接和/或缓存将只是封装在该服务中的内部实现。用户下订单,订单有任务。所有这些类都可以将GroupAccount对象作为私有字段,或者既然Task也有一个Order对象作为私有字段,GroupAccount应该只是Order类的私有字段吗?一般来说,这种“冗余”是要避免的,相反,DRY原则适用-例如,如果我有一个客户订单,那么订单行也不应该有对客户的引用。一如既往,可能会有特殊情况,但从正确的原则开始,最终会减少痛苦。谢谢你的帮助。所以据我所知,在这些类中根本不需要GroupAccount私有字段?我可以在需要时实例化一个GroupAccount对象,因为我的数据库在GroupAccounts表的所有表中都有一个外键?您的数据库当然不应该有冗余的属性/列(请查看“第三个正常表单”)。如果表有一个看似冗余的引用,那么您需要确定原因。例如,扩展我之前的类比,如果Order和Orderline表都有一个Address列,那么它在Orderline上功能上是否需要(例如某些项目被允许在其他地方装运),或者不需要(例如可能是性能“非标准化”的,或者可能只是糟糕的设计!)。Java类需要从数据库镜像功能需求。