Встречается на собеседованиях • сегодня

Как передать родительский и дочерний классы с полями в базу данных

Для хранения иерархии классов в БД есть 3 основных подхода:

  1. Единая таблица (Single Table)
    Все поля родителя и наследников в одной таблице с дискриминатором:
java
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
class Parent {
    @Id Long id;
    String parentField;
}

@Entity
@DiscriminatorValue("CHILD")
class Child extends Parent {
    String childField;
}
  1. Таблица на класс (Joined Table)
    Отдельные таблицы для каждого класса с JOIN:
java
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
class Parent {
    @Id Long id;
    String parentField;
}

@Entity
class Child extends Parent {
    String childField;
}
  1. Таблица на конкретный класс (Table per Class)
    Каждый класс хранится в своей таблице без связи:
java
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
class Parent {
    @Id Long id;
    String parentField;
}

@Entity
class Child extends Parent {
    String childField;
}

Выбор зависит от структуры данных и требований к производительности. Single Table проще, но может содержать NULL-поля, Joined Table нормализован, но требует JOIN-ов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы