是否可以将范围设置为域类?

时间:2011-07-18 12:30:40

标签: grails scope dns

我想知道grails是否可以指定域类的范围。

很难解释我的应用程序目前是如何工作的: - 使用SQLJ通过外部“模块”完成数据库访问。该模块是我的grails应用程序中的控制器用户。 - 用户要求提交表格的特定信息 - >请求提交给外部模块 - >从数据库中提取的信息 - >信息加载到grails mem DB(HSQL) - >视图中显示的信息。

它在开发环境中工作正常,因为我是唯一使用该应用程序的人。但我想知道应用程序将如何与两个或更多用户表现。我的意思是,加载到grails内存数据库中的信息是否会在用户之间共享?如何不共享一个用户与其他用户请求的信息?

提前感谢您对此主题的任何帮助。

问候。

3 个答案:

答案 0 :(得分:1)

它将在所有用户之间共享。

但是,这取决于你,对于任何其他数据库,必须有一些标准(db列),您只能通过它选择与当前用户相关的信息。

答案 1 :(得分:1)

数据库中的所有数据都在grails应用程序的所有用户之间共享。您必须编写自定义查询以限制返回给特定用户的数据。根据您的应用程序,可能类似于以下内容。

class DomainClass1 {
//fields you get from SQLJ go here
int userId
}

将数据导入域类的实例。

def domInstance=new DomainClass1()
domInstance.loadFromSQLJ() //call the SQLJ module and put it's data in the domain class
domInstance.userId=5 //assign the user associated with this info
domInstance.save()

然后,当您想要使用userId 5

显示用户的信息时
def domInstance2=DomainClass1.findByUserId(5)
//Do stuff with domInstance2

答案 2 :(得分:1)

在我们的项目中,我们覆盖考虑了domain aggregate rootget()或其他)的域类list()User,并检查所有命名查询

这省去了访问实例的所有其他方法,例如findBy*(),条件,findWhere()(虽然您也可以覆盖动态方法)或HQL,但无论如何都会减少安全审查的数量减少80%。

突然间,在脚手架中使用DomainClass.list()就可以了。