Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
27 Июл 2023
2 мин
1677

Разница между JPA JoinColumn и mappedBy

Во время изучения JPA может возникнуть вопрос о различиях между аннотациями @JoinColumn и mappedBy. Обе эти аннотации используются в связях Один ко Многим (@OneToMany)

Во время изучения 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 используется для указания на владельца связи в двухсторонних связях. Важно правильно использовать эти аннотации, чтобы обеспечить корректное отображение ваших сущностей на таблицы базы данных.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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