У меня есть два класса, Родитель и Дети
@Entity
class Parent {
@Id
private long id;
@OneToMany
private List<Children> children;
}
@Entity
class Children {
@Id
private int id;
@ManyToOne
private Parent parent; //Normal bi-directional mapping
// OR
private long parentId; //just keeping reference to parent (kind of bi-directional)
}
Требования
Мне нужен навигационный доступ в обоих направлениях. Но навигационный доступ от дочернего к родительскому не критичен. Он будет использоваться время от времени для выполнения некоторых операций. Навигационный доступ от родителя к дочернему элементу очень важен на прикладном уровне и является частью базовой бизнес-логики.
- Имеет ли вообще смысл сохранять здесь двунаправленное отображение?
- Если да, то имеет ли смысл хранить только идентификатор родителя в дочернем элементе? Я боюсь сложностей, с которыми я могу столкнуться, если сопоставлю всю родительскую сущность с дочерней.
Насколько я понимаю, сопоставление объекта или просто идентификатора родителя не будет иметь никакого значения в хранилище базы данных, так как в обоих случаях база данных будет хранить для него только один столбец (в качестве внешнего ключа в случае сопоставления объекта и в качестве обычный столбец-parentId в случае сохранения только идентификатора).
Однако я мог бы повысить производительность, если бы явно информировал базу данных о двунаправленной связи между двумя объектами?
PS. Не обращайте внимания на отсутствующие аннотации и другие параметры, чтобы завершить сопоставление синтаксически. Вопрос не в том, «Как я должен», а в том, «Должен ли я»?