2012-06-26 2 views
0

Для отношений OneToMany, среда воспроизведения позволяет хозяину сохранить список подчиненных. Список не имеет фиксированного размера и может стать очень большим, тогда как строка базы данных, в которой хранится мастер, имеет заданный размер. Итак, как играть! framework хранит список подчиненных в строке, содержащей мастер?Как играть в списки хранилища фреймов (для отношений OneToMany)

ответ

1

Воспроизведение использует спящий режим для сохранения, так что это вопрос спящий, а не специально для воспроизведения.

Предположим, у меня есть класс Author и класс Book, где у Author есть список книг, тогда в базе данных будут две таблицы, автор и книга. Где книга будет содержать ссылку (author_id) для родителя.

Итак, hibernate хранит список в отдельном списке. Если список не содержит сущностей, поэтому сопоставление строк не может быть выполнено, я считаю, что спящий режим сериализует данные как клоб, поэтому он может хранить данные любого размера.

+0

Итак, когда я говорю author1.books.add (book1), это на самом деле делает book1.author = author1? Я предполагаю, что это просто для удобства, т. Е. Вместо того, чтобы писать запрос Select * from Book Where Author == author1, я могу просто сказать author1.books.get (0)? – tldr

+0

вы получаете доступ к своему списку в обычном java-способе. его единственный db, который связывает этот способ, чтобы иметь возможность восстановить список. – Codemwnci

+0

Я, вероятно, не произнес ни слова/кадр вопрос правильно, мой плохой! Я спрашивал, когда я набираю author.books.get (0), выполняет ли БД запрос? Выберите * из книги Where Author.id == book.authorId? Аналогично, когда я хочу book.author, он запускает Select * from Author, где Author.id == book.authorId? I.e., он связывает данные с внешним ключом, как обычные rdbms. Абстракция списка существует, поэтому я могу получить доступ к этим объектам как к полям объекта, а не к типу запроса. Правильно ли я понимаю? – tldr

Смежные вопросы