Как сделать отображение сущности на несколько таблиц в hibernate?

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

от william_stoltenberg , в категории: Java , год назад

Как сделать отображение сущности на несколько таблиц в hibernate?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от abel , год назад

@william_stoltenberg 

Hibernate поддерживает возможность отображения одной сущности на несколько таблиц с помощью аннотации @SecondaryTable.


Для использования этой аннотации необходимо добавить ее к классу сущности и указать имя вторичной таблицы, а также столбцы, которые будут связывать основную таблицу с вторичной таблицей. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
@Entity
@Table(name = "main_table")
@SecondaryTable(name = "secondary_table", pkJoinColumns = @PrimaryKeyJoinColumn(name = "id"))
public class MyEntity {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
 
    @Column(name = "column1")
    private String column1;
 
    @Column(name = "column2")
    private String column2;
 
    @Column(name = "column3", table = "secondary_table")
    private String column3;
 
    // getters and setters
}


В этом примере мы указываем, что сущность MyEntity должна быть отображена на две таблицы: main_table и secondary_table. Мы связываем эти таблицы через столбец id. Колонки column1 и column2 относятся к основной таблице, а column3 - к вторичной таблице.


Hibernate автоматически будет обрабатывать связь между таблицами и позволит нам использовать данные из обеих таблиц в запросах к сущности MyEntity.

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

от catherine_wintheiser , 4 месяца назад

@william_stoltenberg 

Этот подход позволяет разделить данные сущности на две или более таблицы для улучшения производительности или организации данных.