Ответ 1
Когда был разработан Java Persistence API (API), он стал очень популярным. JPA описывает управление реляционными данными в приложениях с использованием Java.
JPA (Java Persistence API) - это интерфейс для реализации провайдеров непрерывности.
Hibernate - одна из таких реализаций JPA. Когда вы используете Hibernate с JPA, вы фактически используете реализацию JPA Hibernate.
JPA обычно определяет метаданные через аннотации в классе Java. Альтернативно через XML или их комбинацию. Конфигурация XML перезаписывает аннотации.
Реализации JPA:
- Hibernate: самый передовой и широко используемый. Обратите внимание на classpath, потому что используется множество библиотек, особенно при использовании JBoss. Поддерживает JPA 2.1.
- Toplink. Поддерживает только базовые спецификации JPA. (Это было без оракулов версия реализации JPA)
- EclipseLink: основан на TopLink и является намеченным путем вперед для настойчивости для Oracle и TopLink. Поддержка JPA 2.1
- Apache OpenJPA. Лучшая документация, но кажется очень ошибочной. Открытый исходный код для JPA. Поддержка JPA 2.0
- DataNucleus. Хорошо документированный, открытый источник (лицензия Apache 2), также является поставщиком JDO. Поддержка JPA 2.1
- ObjectDB: хорошо документировано
Другие подходы:
- Обычный JDBC
- ORM с Hibernate: Hibernate теперь также очень поддерживает JPA
- iBatis: проект переместился в MyBatis (ссылка)
- СДО
Мотивация для спящего режима как мой выбор JPA:
- Зрелый проект:
- Самый продвинутый
- Хорошо документировано
- Полезные подпрограммы Hibernate
- Спящий режим: автоматическая генерация кода и создание базы данных
- Проверка спящего режима: bean возможности спецификации. Интегрируется с JPA2
- Поиск в спящем режиме: мощный полнотекстовый поиск объектов домена
- Активное сообщество
- Большое сообщество разработчиков
- Широко используется
Hibernate стала быстродействующей версией JPA очень быстро после публикации окончательной спецификации. Он имеет богатый набор функций и быстро генерирует новые функции, поскольку процесс разработки с открытым исходным кодом, как правило, быстрее, чем процесс сообщества Java.