[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-hibernate-chto-takoe-jpa-i-kak-hibernate-svyazan-s-jpa":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":18,"progress":19,"seo":20},749,"chto-takoe-jpa-i-kak-hibernate-svyazan-s-jpa",19,"hibernate","Hibernate","🐻","Что такое JPA и как Hibernate связан с JPA?","JPA (Jakarta Persistence API, ранее Java Persistence API) — спецификация Java, определяющая стандартный API для объектно-реляционного маппинга и управления персистентными данными. JPA — это набор интерфейсов и аннотаций, а не реализация.\n\nHibernate — наиболее популярная реализация JPA. Помимо Hibernate, существуют другие реализации: EclipseLink, OpenJPA.\n\n### Соотношение JPA и Hibernate\n\n```\nJPA (спецификация)     →  Hibernate (реализация)\nEntityManager          →  Session (extends EntityManager)\nEntityManagerFactory   →  SessionFactory (extends EntityManagerFactory)\nJPQL                   →  HQL (расширение JPQL)\n@Entity, @Table, @Id   →  аннотации JPA + собственные (@NaturalId, @BatchSize...)\npersistence.xml        →  hibernate.cfg.xml (или Spring Boot auto-config)\n```\n\n\u003Cdetails>\n\u003Csummary>Пример: JPA API vs Hibernate API\u003C\u002Fsummary>\n\n```java\n\u002F\u002F JPA API (стандартный, переносимый)\n@PersistenceContext\nprivate EntityManager entityManager;\n\npublic User findById(Long id) {\n    return entityManager.find(User.class, id);\n}\n\npublic List\u003CUser> findByName(String name) {\n    return entityManager.createQuery(\n            \"SELECT u FROM User u WHERE u.name = :name\", User.class)\n        .setParameter(\"name\", name)\n        .getResultList();\n}\n\n\u002F\u002F Hibernate API (расширенный)\nSession session = entityManager.unwrap(Session.class);\n\n\u002F\u002F NaturalId — Hibernate-специфичная функция\nUser user = session.byNaturalId(User.class)\n    .using(\"email\", \"john@example.com\")\n    .load();\n\n\u002F\u002F Hibernate-специфичные аннотации\n@Entity\npublic class User {\n    @NaturalId\n    private String email;       \u002F\u002F натуральный ключ — только Hibernate\n\n    @BatchSize(size = 25)       \u002F\u002F оптимизация загрузки — только Hibernate\n    @OneToMany(mappedBy = \"user\")\n    private List\u003COrder> orders;\n}\n```\n\n\u003C\u002Fdetails>\n\n### Важное\n\n- JPA — спецификация (интерфейсы), Hibernate — реализация\n- Используя только JPA API, можно заменить Hibernate на другую реализацию без изменения кода\n- Hibernate расширяет JPA собственными аннотациями и API (`@NaturalId`, `@BatchSize`, `@Formula`, `Session`)\n- В Spring Boot по умолчанию используется Hibernate как JPA-провайдер\n\n### Частые ошибки\n\n- Путать JPA и Hibernate — JPA не умеет ничего делать сам, это только набор интерфейсов\n- Использовать Hibernate-специфичный API без необходимости — теряется переносимость; начинайте с JPA API\n- Не знать, что происходит «под капотом» — Spring Data JPA → JPA → Hibernate → JDBC → SQL; понимание всех уровней необходимо для отладки\n\n### Как используется в 2026\n\n- JPA 3.1+ (Jakarta) — актуальная версия спецификации, входит в Jakarta EE 10\n- Hibernate 6.x — реализация JPA 3.1, значительные внутренние изменения по сравнению с 5.x\n- Spring Data JPA абстрагирует от JPA\u002FHibernate ещё сильнее, но знание JPA необходимо для оптимизации\n- Миграция с `javax.persistence` на `jakarta.persistence` — обязательна при переходе на Spring Boot 3.x\n\n> **На собеседовании:** ключевой момент — JPA это спецификация (интерфейсы и аннотации), а Hibernate — реализация. Покажите, что знаете стек вызовов: Spring Data JPA → JPA → Hibernate → JDBC → SQL. Если спросят, зачем нужен JPA при наличии Hibernate — ответ в переносимости и стандартизации.","","junior",[15,16,17,7],"spring-data","jpa","orm",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":34,"featuredSnippetReady":35},"Что такое JPA и как Hibernate связан с JPA — Gymterview","JPA — спецификация Java для ORM, Hibernate — её реализация. Разбираем соотношение EntityManager\u002FSession, JPQL\u002FHQL и миграцию на Jakarta.","JPA vs Hibernate: спецификация и реализация — Gymterview","Чем JPA отличается от Hibernate, как соотносятся EntityManager и Session, JPQL и HQL. Миграция javax → jakarta.",[26,27,8,28,29,30,31,32,33],"JPA","Jakarta Persistence API","EntityManager","Session","JPQL","HQL","Spring Data JPA","Java","JPA (Jakarta Persistence API) — спецификация Java для ORM, определяющая интерфейсы и аннотации. Hibernate — наиболее популярная реализация JPA. EntityManager (JPA) → Session (Hibernate), EntityManagerFactory → SessionFactory, JPQL → HQL. Используя JPA API, можно заменить реализацию без изменения кода. Hibernate расширяет JPA: @NaturalId, @BatchSize, @Formula.",true]