Изучите ассоциации «один ко многим» и их реализацию.

Введение

  • В этой статье мы узнаем об ассоциациях один ко многим, когда их использовать, и реализуем их с помощью 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")…