我想知道grails是否可以指定域类的范围。
很难解释我的应用程序目前是如何工作的: - 使用SQLJ通过外部“模块”完成数据库访问。该模块是我的grails应用程序中的控制器用户。 - 用户要求提交表格的特定信息 - >请求提交给外部模块 - >从数据库中提取的信息 - >信息加载到grails mem DB(HSQL) - >视图中显示的信息。
它在开发环境中工作正常,因为我是唯一使用该应用程序的人。但我想知道应用程序将如何与两个或更多用户表现。我的意思是,加载到grails内存数据库中的信息是否会在用户之间共享?如何不共享一个用户与其他用户请求的信息?
提前感谢您对此主题的任何帮助。
问候。
答案 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 root(get()
或其他)的域类list()
,User
,并检查所有命名查询
这省去了访问实例的所有其他方法,例如findBy*()
,条件,findWhere()
(虽然您也可以覆盖动态方法)或HQL,但无论如何都会减少安全审查的数量减少80%。
突然间,在脚手架中使用DomainClass.list()
就可以了。