Во время изучения JPA может возникнуть вопрос о различиях между аннотациями @JoinColumn и mappedBy. Обе эти аннотации используются в связях Один ко Многим (@OneToMany) и Многие к Одному (@ManyToOne), и важно понимать, как и когда их использовать.
@JoinColumn
Аннотация @JoinColumn используется для указания поля или столбца, который будет использоваться для внешнего ключа.
@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
private List<Branch> branches;
...
}
В данном случае, в таблице Branch будет столбец companyIdRef, который ссылается на поле companyId в таблице Company. Это означает, что на стороне Branch будет внешний ключ, связывающий его с Company.
mappedBy
Аннотация mappedBy используется в двухсторонней связи. Она указывает на поле владельца связи.
@Entity
public class Company {
@OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef")
private List<Branch> branches;
...
}
В данном случае, mappedBy указывает, что связь уже была определена в классе Branch через поле companyIdRef. Это означает, что в классе Branch должно быть поле companyIdRef, которое определяет связь с Company.
Важно помнить, что mappedBy не создает столбец внешнего ключа в таблице, а только указывает на владельца связи.
Вывод
Итак, @JoinColumn и mappedBy используются для определения разных сторон связи. @JoinColumn используется для определения внешнего ключа, в то время как mappedBy используется для указания на владельца связи в двухсторонних связях. Важно правильно использовать эти аннотации, чтобы обеспечить корректное отображение ваших сущностей на таблицы базы данных.
Перейти в телеграм, чтобы получить результаты теста



Забрать
Добавить комментарий