String Grails在域模型中引用对象

String Grails在域模型中引用对象,string,performance,grails,object,dns,String,Performance,Grails,Object,Dns,我有一个简单的问题,我在网上找不到答案。以下哪种域模型更有效: class Text { User author static constraints = {} } class Text { String author static constraints = {} } 用户对象中的用户名为字符串。但哪一个更有效?要保存字符串并搜索对象或保存对象?当您使用Criteria query时,第一个选项将提供更准确的结果,而且它也将非常有效,JVM比较对象哈

我有一个简单的问题,我在网上找不到答案。以下哪种域模型更有效:

class Text {

    User author

    static constraints = {}
}

class Text {

    String author

    static constraints = {}
}

用户对象中的用户名为字符串。但哪一个更有效?要保存字符串并搜索对象或保存对象?

当您使用Criteria query时,第一个选项将提供更准确的结果,而且它也将非常有效,JVM比较对象哈希代码比在查询时比较字符串更容易,如果您使用一个对象,它会使您的未来生活更轻松,尤其是在应用程序增长的情况下。但是,如果这个应用程序没有增长的机会,那么就没有理由只使用包含字符串作者的对象(这只是另一个没有任何目的的间接层次)。 出于性能考虑,使用User会更好,因为它默认使用一对一关联,并且在加载文本对象时不会加载User对象,因此只有在请求时才有User。此外,这是更好的OOP。 如果您谈论的是在这些域中查询作者的性能,那也是一样的