Я работаю на приложения Java и используя JPA для взаимодействия с базой данных, у меня есть два важных вопроса:JPA Аннотации и mappedBy
- Я хочу сделать двунаправленную связь между двумя классами, так как мне нужно доступ к данным с обеих сторон. Возьмем случай двух классов A и B с A * -1 B (как UML-диаграмма, A имеет единственное B и B имеет несколько A ...).
в A:
@ManyToOne
private B attribute;
в B
@OneToMany
private List<A> list;
Этого достаточно, чтобы сделать ссылку двухстороннюю? или обязательно использовать сопоставленный?
- Который подводит нас к моему второму вопросу, если mappedBy находится на неправильной стороне, это просто повлияет на производительность или, что еще хуже? (данные не сохраняются)? Например, в случае мощности 1- * у нас нет никакого выбора, то mappedBy должен быть в стороне OneToMany и в этом случае:
в B
@OneToMany(mappedBy = "attribute")
private List<A> list;
Зная тот факт, что я не создаст класс B и не создаст список и не назначит объекты, я ничего не сделаю в стороне B. Я просто создам повторно классы A и каждый раз, когда я назначаю ему объект B, поэтому у меня может быть несколько классов A, которые имеют тот же затронутый объект B, и я хочу, чтобы B автоматически обновлял эту ссылку и ее список A.
большое спасибо ! 1- так что, если я не укажу mappedBy, он будет работать, но мы не будем иметь никакой связи между этими двумя именами правильно? 2- Случай mappedBy помещен на неправильную сторону, может произойти только в случае OneToMany или ManyToOne , потому что для 1-1 и * - * мы можем выбрать, какая сторона права владельца? 3- Если mappedBy находится на неправильной стороне, У меня будут исключения, когда я попытаюсь добавить данные в базу данных, а не в начале (просто кодируя модель) правильно? Большое спасибо – TER
Да, вы правы на всех трех учетных записях. Просто для уточнения пункта 1: Да, вы правы в отношении связи между ними.Его называют «двунаправленными» отношениями, которые вы найдете в этом термине, поскольку вы копаете глубже в JPA. – Shahzeb