Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Java: JPA, Entity, annotations, ORM, Java Persistence API

Какие аннотации используются для описания Entity в JPA?

Этот вопрос проверяет знание ключевых аннотаций JPA для маппинга Java-классов на таблицы базы данных, что необходимо для корректной работы ORM.

Короткий ответ

Основные аннотации для описания Entity в JPA — это @Entity, @Id, @GeneratedValue, @Table, @Column и @Transient. Аннотация @Entity помечает класс как сущность, сохраняемую в БД. @Id указывает на первичный ключ, а @GeneratedValue определяет стратегию его генерации. @Table и @Column позволяют настроить соответствие между полями класса и столбцами таблицы, например, задать имена.

Длинный ответ

Java Persistence API (JPA) — это спецификация для объектно-реляционного отображения (ORM) в Java. Аннотации JPA используются для декларативного описания того, как обычные Java-классы (POJO) и их поля соотносятся с таблицами и столбцами в реляционной базе данных. Это избавляет разработчика от написания большого количества шаблонного SQL-кода.

Ключевые аннотации Entity

  • @Entity: Обязательная аннотация, которая помечает класс как сущность JPA. Класс должен иметь публичный или защищённый конструктор без аргументов.
  • @Id: Указывает поле, которое является первичным ключом сущности. Это обязательная аннотация.
  • @GeneratedValue: Используется вместе с @Id для указания стратегии автоматической генерации значений первичного ключа (например, IDENTITY, SEQUENCE, AUTO).
  • @Table: Позволяет указать детали таблицы БД, такие как её имя (name) и схему (schema). Если аннотация отсутствует, используется имя класса.
  • @Column: Позволяет настроить маппинг поля на столбец таблицы: задать имя столбца (name), допустимость null (nullable), длину (length) и другие свойства.
  • @Transient: Указывает, что поле не должно быть сохранено в базе данных. Это полезно для временных или вычисляемых полей.

Пример кода

Рассмотрим простую сущность, представляющую пользователя.

import javax.persistence.*;

@Entity
@Table(name = "users") // Соответствует таблице "users" в БД
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // Автоинкремент в БД
    private Long id;

    @Column(name = "username", nullable = false, length = 50)
    private String username;

    @Column(name = "email", unique = true)
    private String email;

    private Integer age; // Будет сохранено в столбец "age" (имя по умолчанию)

    @Transient // Не будет сохранено в БД
    private String temporaryCode;

    // Конструкторы, геттеры и сеттеры
    public User() {}
    // ...
}

Применение и важность

Эти аннотации применяются в любом enterprise-приложении на Java, которое использует Spring Data JPA, Hibernate (как наиболее популярную реализацию JPA) или другие ORM-фреймворки. Они являются основой для декларативной конфигурации модели данных, что делает код чище и легче в поддержке по сравнению с XML-маппингом или прямым JDBC.

Вывод: Аннотации JPA для Entity — это фундаментальный инструмент для работы с ORM в Java. Их знание обязательно для разработки слоя доступа к данным в современных Spring-приложениях, так как они позволяют эффективно и наглядно описывать связь между объектной моделью и реляционной базой данных.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Java

    Java

  • Spring

    Spring

Ключевые слова

#JPA

#Entity

#annotations

#ORM

#Java Persistence API

Подпишись на Java Developer в телеграм