Изучите ассоциации «один ко многим» и их реализацию.
Введение
- В этой статье мы узнаем об ассоциациях один ко многим, когда их использовать, и реализуем их с помощью Spring data JPA на одном примере.
Ассоциация «один ко многим»
- Давайте разберемся в связи один-ко-многим на простом примере. У нас есть две сущности/таблицы в базе данных. Один — «Клиент», другой — «Кредитная карта».
- Клиент может иметь одну или несколько кредитных карт, что определяет связь между одной и многими.
- Отношения «один ко многим» существуют в базе данных, когда одна строка в таблице связана со многими строками в другой таблице.
Сущности
- Давайте определим необходимые сущности для нашего варианта использования.
Клиент
- В сущности клиента нам необходимо определить отношение @OneToMany, в котором мы определяем список кредитных карт как дочернюю ассоциацию.
- Эта ассоциация, по сути, позволит нам получить доступ ко всем кредитным картам, принадлежащим данному объекту-клиенту.
@Entity @Table(name="customer") public class Customer { @Id @GeneratedValue(strategy= GenerationType.SEQUENCE, generator = "customer_id_seq") @SequenceGenerator(name = "customer_id_seq", sequenceName = "customer_id_seq", allocationSize = 1) private Long id; private String name; @OneToMany(mappedBy = "customer") private List<CreditCard> creditCard = new ArrayList<>(); // getters and setters }
- В нашей базе данных есть один клиент для этого варианта использования.
Кредитная карта
- Для сущности CreditCard нам нужно определить ассоциацию @ManyToOne с родителем, чтобы мы могли установить двунаправленную связь.
- Это позволит нам найти родительскую сущность из дочерней сущности. По сути, если у нас есть сущность CreditCard, мы можем получить от нее сущность Customer.
@Entity @Table(name="credit_card")…