Двунаправленность может повредить в некоторых случаях, как объяснил Акставт! Я был бы очень осторожен с каждым отношением, отображенным в Hibernate! У вас может быть бесконечное время, необходимое для загрузки вещей в Hibernate, если вы точно не знаете, что делаете. Тщательно продумайте варианты использования и используйте разные классы моделей для разных вариантов использования. F.ex. в списке вещей мне не нужны все связанные объекты, только метка и идентификатор. Таким образом, для меня сущность списка отличается (и очень проста) от сущности детализации.
разница между однонаправленными и двунаправленными ассоциациями?
Поскольку таблица, сгенерированная в БД, одинакова, единственное различие, которое я обнаружил, состоит в том, что каждая сторона двунаправленных ассоциаций будет иметь ссылку на другую, а однонаправленная - нет.
Это однонаправленная ассоциация
public class User {
private int id;
private String name;
@ManyToOne
@JoinColumn(
name = "groupId")
private Group group;
}
public class Group {
private int id;
private String name;
}
Двунаправленная ассоциация
public class User {
private int id;
private String name;
@ManyToOne
@JoinColumn(
name = "groupId")
private Group group;
}
public class Group {
private int id;
private String name;
@OneToMany(mappedBy="group")
private List<User> users;
}
Разница в том, содержит ли группа ссылку на пользователя.
Интересно, это единственная разница? что рекомендуется?