代码之家  ›  专栏  ›  技术社区  ›  JoeyH

在grails中对哪个域对象执行查询重要吗

  •  0
  • JoeyH  · 技术社区  · 8 年前

    执行查询时使用哪个域对象重要吗?例如,我有两个域对象

    Class A {
        String name
    }
    
    Class B {
        String name
    }
    

    如果要获取所有A对象,可以执行以下操作

    A.executeQuery('FROM A')
    

    但我也可以从不同的域对象调用相同的查询,得到完全相同的结果

    B.executeQuery('FROM A')
    

    这两种说法在性能方面是否有区别?也许在幕后发生了一些不同的事情?

    为了了解更多的上下文,我正在编写一个服务,其中应用程序将动态执行域对象的查询。因此,我可以选择一个基本域对象,然后每次都执行它,也可以使用提供给方法的字符串创建域对象的实例。

    谢谢

    2 回复  |  直到 8 年前
        1
  •  0
  •   Joshua Moore    8 年前

    不,没关系。在本例中,它只是执行HQL(hibernate查询),并且任何一个域类在这方面的行为都完全相同 executeQuery .

    在您的特定情况下,我只使用一个域类来执行来自的所有查询。无需更改类型。

        2
  •  0
  •   Jeff Scott Brown    8 年前

    执行查询时使用哪个域对象重要吗?

    这取决于您使用的查询技术。对于 executeQuery 尤其是它没有。对于大多数其他查询技术来说,它确实如此。例如 A.executeQuery('FROM A') 与相同 B.executeQuery('FROM A') . A.list() 不同于 B.list() . A.findAllByTitle('Tribe') 不同于 B.findAllByTitle('Tribe') , A.where { ... } 不同于 B.where { ...}