您在 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 { ...} 不同,等等...