Скажем, у нас есть следующие две сущности.
Библиотека
public class Library
{
private Collection<Book> books = new ArrayList<Book>();
public boolean add(Book book)
{
return books.add(book);
}
public boolean remove(Book book)
{
return books.remove(book);
}
}
Книга
public class Book
{
private Library library;
public setLibrary(Library library)
{
this.library = library;
}
}
Этоэто двунаправленные отношения, которые, скорее всего, разорвутся довольно быстро.Даже если вы добавляете книгу в библиотеку, библиотека книги не обновляется.И даже если вы обновляете библиотеку книги, библиотека не обновляется.
Итак, как бы вы поддерживали эти двунаправленные отношения хорошим способом?Конечно, я мог бы просто сделать add
+ remove
в setLibrary
и наоборот, но, насколько я вижу, это может вызвать цикл, который, вероятно, закончится StackOverflowError
.