Типы отношений в Grails - PullRequest
       0

Типы отношений в Grails

0 голосов
/ 14 августа 2011

Какая польза от определения отношений в обоих классах (hasOne / hasMany AND ownTo)? Давайте рассмотрим пример

class User {
   Profile profile
}

class Profile {
    String name
    String age
    String location
} 

В этом случае User имеет один Profile. Так как же будут определены отношения hasOne и belongsTo и почему?

Какая польза от указания типов отношений? Мы можем просто получить объект вместо указания hasOne в User.

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

Вы можете использовать либо.Свойства hasOne и belongsTo определяют отношения между классами, а также добавляет каскадное удаление сохранений и обновлений.Если вы решите не использовать эти свойства, вам придется реализовать собственный каскадный эффект.

Преимущество заключается в том, что не нужно использовать эти свойства и отображать взаимосвязь при разработке крупномасштабного приложения, так как это приведет к снижению производительности.Это объясняется в блоге Берта Беквита

2 голосов
/ 14 августа 2011

Использование hasOne и ownTo для контроля того, как GORM будет относиться к вашим отношениям.Согласно последней документации Grails по моделированию GORM справедливо следующее:

Класс User {Profile profile} приведет к соотношению многие-к-одному.Это означает, что любое количество Клиентов может указывать на данный профиль.За этим ни одно отношение не применяется.

Если профилю присвоено статическое отношение ownTo = [client: Client], то это отношение становится двунаправленным отношением «многие к одному», то есть у клиента есть один профиль, и этот профиль принадлежитконкретный клиент.GORM теперь будет управлять сохранением профиля (сохранять, обновлять и удалять) при сохранении, обновлении или удалении клиента.Это также позволяет запрашивать через GORM профиль и выставлять обратную ссылку на клиента.

hasOne используется для создания отношения один-к-одному.Вы должны применить это на стороне владельца (клиент в вашем примере).Это позволит GORM управлять постоянством профиля при сохранении, обновлении или удалении клиента.

Наконец, hasMany позволяет вам определять отношение один-ко-многим со стороны владельца (в вашем случае это клиент)где клиент может иметь много профилей (глупо, но я использую ваши примеры свойств).Опять же, это говорит GORM, что постоянство должно обрабатываться при сохранении, обновлении или удалении Клиента.В отношении этого типа отношений есть несколько ошибок, и я настоятельно рекомендую вам прочитать справочную документацию, чтобы узнать больше о том, как правильно использовать этот тип отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...