您在 grails 中对什么域对象执行查询是否重要
Does it matter what Domain Object you execute a query on in grails
执行查询时使用的域对象重要吗?例如,我有这两个域对象
Class A {
String name
}
Class B {
String name
}
如果我想得到所有的A对象,可以这样做
A.executeQuery('FROM A')
但我也可以从不同的域对象调用相同的查询并获得完全相同的结果
B.executeQuery('FROM A')
这两个语句在性能方面有区别吗?也许幕后发生的事情有所不同?
关于更多的上下文,我正在编写一个服务,应用程序将在其中动态地执行域对象的查询。因此,我可以选择一个基本域对象并每次都执行它,或者我可以使用方法中提供的字符串创建域对象的实例。
谢谢
不,没关系。在这种情况下,它只是执行 HQL(休眠查询)并且任一域 class 在这方面对 executeQuery
的行为完全相同。
在您的特定情况下,我只使用一个域 class 来执行来自的所有查询。无需更改类型。
Does it matter what domain object you use when you execute a query?
这取决于您使用的查询技术。对于 executeQuery
特别是它没有。对于大多数其他查询技术,它确实如此。例如,A.executeQuery('FROM A')
与 B.executeQuery('FROM A')
相同。 A.list()
与 B.list()
不同。 A.findAllByTitle('Tribe')
与 B.findAllByTitle('Tribe')
不同,A.where { ... }
与 B.where { ...}
不同,等等...
执行查询时使用的域对象重要吗?例如,我有这两个域对象
Class A {
String name
}
Class B {
String name
}
如果我想得到所有的A对象,可以这样做
A.executeQuery('FROM A')
但我也可以从不同的域对象调用相同的查询并获得完全相同的结果
B.executeQuery('FROM A')
这两个语句在性能方面有区别吗?也许幕后发生的事情有所不同?
关于更多的上下文,我正在编写一个服务,应用程序将在其中动态地执行域对象的查询。因此,我可以选择一个基本域对象并每次都执行它,或者我可以使用方法中提供的字符串创建域对象的实例。
谢谢
不,没关系。在这种情况下,它只是执行 HQL(休眠查询)并且任一域 class 在这方面对 executeQuery
的行为完全相同。
在您的特定情况下,我只使用一个域 class 来执行来自的所有查询。无需更改类型。
Does it matter what domain object you use when you execute a query?
这取决于您使用的查询技术。对于 executeQuery
特别是它没有。对于大多数其他查询技术,它确实如此。例如,A.executeQuery('FROM A')
与 B.executeQuery('FROM A')
相同。 A.list()
与 B.list()
不同。 A.findAllByTitle('Tribe')
与 B.findAllByTitle('Tribe')
不同,A.where { ... }
与 B.where { ...}
不同,等等...