Объясните предназначение аннотации @Entity в контексте работы с ORM в Java.
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
@Entity показывает ORM, что класс нужно рассматривать как сущность и хранить его состояние в таблице базы данных. Обычно ожидают услышать, что у сущности должен быть идентификатор, а ORM по этой аннотации умеет выполнять CRUD-операции. Также важно понимать, что это часть JPA-модели, а не просто обычная метка для класса.
Определение:
@Entity — это JPA-аннотация, которая помечает класс как постоянную сущность, сопоставляемую с таблицей в базе данных. ORM-фреймворк использует такой класс для загрузки, сохранения, обновления и удаления данных. Обычно у сущности есть поле идентификатора, по которому она однозначно определяется в БД.
Пример использования:
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getters and setters
}
В этом примере класс User становится сущностью, которую ORM может связать с таблицей user или с таблицей, заданной через дополнительные аннотации.
Пояснение кода:
@Entityсообщает JPA-провайдеру, чтоUser— это объект, который нужно сохранять в БД.@Idуказывает поле первичного ключа.@GeneratedValueзадаёт стратегию генерации идентификатора.- Поля
nameиemailпо умолчанию будут отображаться на столбцы таблицы. - ORM сможет создавать SQL-запросы для вставки, чтения, обновления и удаления объектов этого класса.
Ключевые моменты:
@Entityделает класс управляемым ORM как сущность базы данных.- У сущности должен быть идентификатор, обычно помеченный
@Id. - Аннотация используется в JPA и поддерживается ORM-фреймворками вроде Hibernate.
- Класс-сущность должен быть пригоден для маппинга: обычно нужен конструктор без аргументов и доступ к полям через getter/setter.
@Entityсама по себе не создаёт таблицу, а лишь задаёт семантику отображения класса на БД.