Что такое маппинг One-to-Many в Hibernate?

Пользователь

от roma , в категории: Java , 7 месяцев назад

Что такое маппинг One-to-Many в Hibernate?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от abel , 5 месяцев назад

@roma 

Mapping One-to-Many в Hibernate - это отображение отношения между двумя таблицами базы данных: одна запись в одной таблице может иметь связь с несколькими записями в другой таблице.


Например, у нас есть таблица "Заказчики" и таблица "Заказы". У каждого клиента может быть несколько заказов. В этом случае мы говорим о One-to-Many отношении между таблицами "Заказчики" и "Заказы", так как каждый заказ принадлежит только одному клиенту, но каждый клиент может иметь несколько заказов.


В Hibernate такое отношение может быть отображено с помощью аннотаций или XML-конфигураций. Для этого можно использовать аннотацию @OneToMany, которая указывает на связь между двумя таблицами и определяет, как эта связь будет отображена в Java-коде.


Пример аннотации One-to-Many в Hibernate:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Entity
@Table(name = "customers")
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @OneToMany(mappedBy = "customer")
    private Set<Order> orders;

    // ...
}

@Entity
@Table(name = "orders")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @ManyToOne
    @JoinColumn(name = "customer_id")
    private Customer customer;

    // ...
}


В этом примере мы используем аннотацию @OneToMany для отображения отношения One-to-Many между таблицами "Заказчики" и "Заказы". Мы определяем свойство orders типа Set<Order>, которое содержит все заказы, связанные с данным клиентом. С помощью параметра mappedBy мы указываем, что отображение этой связи определено в классе Order и ссылается на свойство customer.


Таким образом, мы можем использовать Hibernate для создания и обновления записей в базе данных, отображающих связь между таблицами One-to-Many.