给定以下域类:
class Post {
SortedSet tags
static hasMany = [tags: Tag]
}
class Tag {
static belongsTo = Post
static hasMany = [posts: Post]
}
根据我到目前为止的了解,使用
hasMany
将导致休眠的Set
映射。但是,为了保持唯一性/顺序,Hibernate需要从数据库加载整个集合并比较其哈希值。
添加或删除帖子/标签可能会导致严重的性能问题
如果他们的组合变大。解决此问题的最佳方法是什么?
最佳答案
默认映射中,Hibernate / GORM无法确保任何顺序。因此,它不必为了执行排序而从数据库中加载元素。您将拥有大量ID,但这就是它的程度。
参见19.5.2:
http://www.hibernate.org/hib_docs/reference/en/html/performance-collections.html
通常,Hibernate / GORM将具有比您期望的更好的性能。除非并且直到您可以真正证明现实世界中的性能问题,否则,请信任该框架,不要担心。
关于performance - 使用Grails hasMany关系时如何解决潜在的性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289098/