[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-kakie-osnovnye-annotatsii-jpa-dlya-mappinga-sushchnostey-vy-znaete":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},636,"kakie-osnovnye-annotatsii-jpa-dlya-mappinga-sushchnostey-vy-znaete",14,"spring","Spring","🌱","Какие основные аннотации JPA для маппинга сущностей вы знаете?","JPA использует аннотации для маппинга Java-классов на таблицы БД. Минимальный набор: `@Entity`, `@Id`, `@GeneratedValue`.\n\n\u003Cdetails>\n\u003Csummary>Пример сущности со всеми основными аннотациями\u003C\u002Fsummary>\n\n```java\n@Entity\n@Table(name = \"users\", schema = \"public\",\n       uniqueConstraints = @UniqueConstraint(columnNames = {\"email\"}))\npublic class User {\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n\n    @Column(name = \"first_name\", nullable = false, length = 100)\n    private String firstName;\n\n    @Column(unique = true, nullable = false)\n    private String email;\n\n    @Column(precision = 19, scale = 2)\n    private BigDecimal balance;\n\n    @Enumerated(EnumType.STRING) \u002F\u002F всегда STRING, не ORDINAL!\n    @Column(nullable = false)\n    private UserStatus status;\n\n    private LocalDateTime updatedAt; \u002F\u002F @Temporal не нужна для Java 8+ Date API\n\n    @Lob \u002F\u002F для больших объектов (TEXT, BLOB)\n    private String description;\n\n    @Transient \u002F\u002F НЕ маппится на колонку\n    private String temporaryField;\n\n    @Embedded\n    private Address address;\n\n    protected User() { } \u002F\u002F конструктор без аргументов обязателен для JPA\n}\n```\n\n\u003C\u002Fdetails>\n\n### Стратегии генерации ID\n\n| Strategy | Описание |\n|----------|----------|\n| IDENTITY | Автоинкремент БД (PostgreSQL SERIAL, MySQL AUTO_INCREMENT) |\n| SEQUENCE | Последовательность БД (рекомендуется для PostgreSQL) |\n| TABLE | Специальная таблица для генерации ID (медленно) |\n| AUTO | Провайдер выбирает стратегию сам |\n\n```java\n\u002F\u002F Рекомендуемый вариант для PostgreSQL\n@Id\n@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = \"user_seq\")\n@SequenceGenerator(name = \"user_seq\", sequenceName = \"users_id_seq\", allocationSize = 50)\nprivate Long id;\n```\n\n### Частые ошибки\n\n1. `@Enumerated(EnumType.ORDINAL)` (по умолчанию) -- при добавлении нового значения в enum порядок нарушится. Всегда используйте `EnumType.STRING`\n2. Забыть конструктор без аргументов -- JPA не сможет создать экземпляр\n3. `GenerationType.AUTO` с Hibernate может создать таблицу `hibernate_sequence` вместо нативной последовательности\n\n> **На собеседовании:** ключевые аннотации -- `@Entity`, `@Id`, `@GeneratedValue`, `@Column`, `@Enumerated(STRING)`. Частая ошибка -- использовать EnumType.ORDINAL.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Какие основные аннотации JPA для маппинга сущностей вы знает — Gymterview","JPA использует аннотации для маппинга Java-классов на таблицы БД. Минимальный набор: `@Entity`, `@Id`, `@GeneratedValue`.","JPA использует аннотации для маппинга Java-классов на таблицы БД. Минимальный набор: `@Entity`, `@Id`, `@GeneratedValue`",[7,13],true]