Разница между отношением «один ко многим» и двунаправленным отношением «один ко многим» (Google App Engine Java Api)

в чем разница между отношением «один ко многим» и двунаправленным отношением «один ко многим». Я прочитал статью ниже, но не понимаю ее. Статья


person Kerem Pekçabuk    schedule 05.06.2010    source источник


Ответы (2)


Двунаправленное отношение «один ко многим» означает, что дочерние элементы имеют ссылку на родителя. Например, нижеприведенный дочерний элемент может получить доступ к родителю через persistUser. Если бы persistUser не существовал в классе PersistentLogin, то он не был бы двунаправленным.

Один ко многим (PersistentUser.java — Родитель):

@OneToMany(mappedBy = "persistentUser", cascade = CascadeType.ALL)
private Collection<PersistentLogin> persistentLogins;

Многие к одному (PersistentLogin.java — дочерний):

@ManyToOne(fetch = FetchType.LAZY)
private PersistentUser persistentUser;
person Taylor Leese    schedule 06.06.2010
comment
Привет, Тейлор, спасибо за ответ. Я новичок в GAE, поэтому я могу понять это немного сложно. Теперь предположим, что есть класс FootballTeam.java и класс Player.java. В футбольной команде много игроков. Что произойдет, если я сделаю это отношение двунаправленным? - person Kerem Pekçabuk; 08.06.2010
comment
Эти отношения будут представлены так же, как в примере, который я привел. Связь @OneToMany будет находиться в классе FootballTeam с атрибутом игроков Collection‹Player›. Отношение @ManyToOne будет находиться в классе Player с атрибутом команды FootballTeam. - person Taylor Leese; 08.06.2010
comment
Тейлор, я понял это, но я думаю, что не знаю значения слова «двунаправленный» в отношениях. Что произойдет, если отношение станет двунаправленным? Не могли бы вы привести пример класса футбольной команды и класса игрока? Спасибо - person Kerem Pekçabuk; 09.06.2010
comment
Термин «двунаправленный» просто означает, что у игрока есть ссылка на команду. Если эта связь не существует на игроке, то она не является двунаправленной. Скорее, это будут однонаправленные отношения. - person Taylor Leese; 09.06.2010
comment
Отношение «один ко многим» означает, что каждая запись должна иметь ссылку. Например, у каждого игрока должна быть команда. Похоже, что в вашем ответе то же самое. я не мог понять разницу между собственными отношениями и двунаправленными отношениями. - person Kerem Pekçabuk; 11.06.2010

Наконец-то я это понял. Думаю, у меня есть класс с именем FootBallTeam, и у него есть свойство с именем teamname. Теперь псевдокод

   FootBallTeam ft = new FootBallTeam();
    ft.setteamname("Barcelona");

затем добавьте 3 класса игроков в эту команду с именем Месси, Хави, Иньеста. теперь, если отношение является двунаправленным, когда я запускаю код ниже,

   ft.setteamname("Real Madrid");

он автоматически запускает приведенные ниже коды за кулисами.

Messi.setteamname("Real Madrid")
Xavi.setteamname("Real Madrid")
Iniesta.setteamname("Real Madrid")
person Kerem Pekçabuk    schedule 11.06.2010