如果我指出要缓存查询的结果,例如
// This example shows the execution of a Hibernate query in a Grails app,
// but the question isn't really about Grails
Author author = new Author(name: 'Charles Dickens')
def results = Book.findByAuthor(author, [cache: true])
作者是否有必要实施equals()
和hashCode()
以使缓存生效?
如果我没有实现这些方法,看来如果我执行上面的代码两次,第二个作者对象将具有与第一个不同的哈希代码,因此第二次不会返回缓存的结果查询已执行。
对于那些不熟悉GORM的人,上面的查询等同于HQL
executeQuery("from Book b where b.author = ?", author)