Вопрос I
Согласно руководству Grails
Помимо возможности использовать кэш второго уровня Hibernate для кэширования экземпляров, вы также можете кэшировать коллекции (ассоциации) объектов.Например:
class Person {
static hasMany = [addresses: Address]
static mapping = {
cache true
addresses cache: true
}
}
Если мы кешируем связь между человеком и его адресами, то имеет ли смысл также кешировать обратные отношения, например
class Address {
static belongsTo = [person: Person]
static mapping = {
cache true
person cache: true // is this necessary?
}
}
Очевидноимеет смысл кэшировать обратные отношения только в том случае, если (в нашем коде приложения) мы перемещаемся от адреса к персоне, но при условии, что отношение перемещается в обоих направлениях, нужно ли его также кэшировать в обоих направлениях?* Вопрос II
Предыдущий вопрос касается кеширования в контексте отношения 1: N.Если вместо этого соотношение между ними равно 1: 1, предположительно, можно ли / можно указать одинаковое поведение при кэшировании?Например:
class Person {
static hasOne = [address: Address]
static mapping = {
cache true
address cache: true
}
}
class Address {
static belongsTo = [person: Person]
static mapping = {
cache true
person cache: true
}
}
Вопрос III
Если у нас есть отношение N: N между двумя объектами, и мы ориентируемся в отношении в обоих направлениях, следующий правильный способ кэшированияассоциации:
class Person {
static hasMany = [personAddress: PersonAddress]
static mapping = {
cache true
personAddress cache: true
}
}
class PersonAddress {
static belongsTo = [person: Person, address: Address]
static mapping = {
cache true
person cache: true
address cache: true
}
}
class Address {
static hasMany = [personAddress: PersonAddress]
static mapping = {
cache true
personAddress cache: true
}
}