Sobes.tech
Назад к вопросам
Junior — Middle
63

Можете ли вы объяснить концепцию Embeddable в JPA и как она используется для встраивания объектов внутри сущностей?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

В JPA аннотация @Embeddable используется для обозначения класса, объекты которого можно встроить в сущность как часть её состояния, но который сам по себе не является отдельной сущностью с собственным идентификатором.

Это удобно, когда нужно сгруппировать несколько полей в отдельный объект для лучшей организации кода и повторного использования.

Например, если у сущности User есть адрес, который состоит из улицы, города и почтового индекса, можно создать класс Address с аннотацией @Embeddable и встроить его в User:

@Embeddable
public class Address {
    private String street;
    private String city;
    private String zipCode;

    // геттеры и сеттеры
}

@Entity
public class User {
    @Id
    private Long id;

    private String name;

    @Embedded
    private Address address;

    // геттеры и сеттеры
}

В этом примере поля street, city и zipCode будут храниться в таблице User как колонки, а не в отдельной таблице. Это упрощает структуру базы и позволяет логически группировать связанные данные.