Java-приложения традиционно использовали технологии, такие как JDBC (Java Database Connectivity), для доступа к реляционным базам данных для постоянного хранения данных. Основной проблемой было различие между объектно-ориентированными и реляционными технологиями. JDBC API потребует от разработчиков ручного кодирования наиболее примитивных операций CRUD (создание, чтение, обновление и удаление) в SQL, в которых отсутствует переносимость.
Кроме того, код полностью зависел от SQL, что не является стандартной спецификацией для реляционных баз данных, что усложнило бы переход от одной базы данных к другой. Проблема заключается в том, что реляционные технологии ориентированы на данные и их взаимосвязь, тогда как объектно-ориентированная парадигма делает упор не только на данных, но и на операциях, выполняемых над ними. Это приводит к несоответствию объектно-реляционного импеданса. Одним из широко распространенных решений является объектно-реляционное отображение (ORM).
Hibernate - это ORM (Object / Relational Mapping) каркас для языка программирования Java, который занимается сохранением данных. Это просто объектно-реляционное решение с открытым исходным кодом, которое отображает классы Java в таблицы базы данных в реляционных базах данных и из типов данных Java в SQL. Это облегченная среда ORM, распространяемая по лицензии GNU, целью которой является предоставление разработчикам прозрачного механизма для достижения устойчивости. Он использует мощный язык запросов, похожий на SQL, называемый HQL (сокращение от Hibernate Query Language), который быстро интегрируется как с существующими, так и с новыми приложениями без изменения остальной части приложения. Кроме того, он полностью соответствует объектно-ориентированным понятиям, таким как наследование, полиморфизм и ассоциация. И, что самое приятное, вам не нужно изменять класс приложения для достижения постоянства..
Java Persistence API, или JPA, является спецификацией, которая описывает интерфейс для объектно-реляционных отображений и управления постоянными объектами. Помимо определения API, он определяет набор правил и рекомендаций о том, как реализовать реляционное сопоставление объектов и как сделать эти спецификации совместимыми со всеми поставщиками JPA. Hibernate является наиболее продвинутой и широко используемой ORM-инструкцией JPA. JPA просто предоставляет платформу объектно-реляционного отображения для управления данными между объектами / классами Java и реляционной базой данных в приложениях Java. Это спецификация интерфейса, разработанная для поставщиков реализации JPA, чтобы создать стандарт для реализации ORM с целью удовлетворения требований к высокопроизводительному уровню доступа к данным. Hibernate - самый популярный поставщик JPA.
JPA, сокращение от Java Persistence API, является спецификацией для доступа, управления и сохранения данных в приложениях с использованием платформы Java, Standard Edition (Java, SE) и платформы Java Enterprise Edition (Java, EE). Hibernate, с другой стороны, является скорее инструментом для реализации ORM, который соответствует спецификациям JPA.
JPA - это спецификация объектно-реляционного отображения в Java, которая позволяет разработчикам выполнять операции с базами данных намного быстрее и эффективнее, что позволяет легко взаимодействовать с базами данных. Это стандартный API для персистентности и реляционного сопоставления объектов, предоставляющий разработчикам несколько преимуществ для операций привязки данных. Hibernate - это инструмент реляционного сопоставления объектов с открытым исходным кодом, который упрощает разработку приложений Java, делая подключение к базам данных намного проще, чем когда-либо..
Проблема с JPA заключается в том, что это просто спецификация, которая не предоставляет классов реализации. API - это просто набор классов и методов для постоянного хранения данных в базе данных в соответствии с определенным набором правил и положений, которым должны следовать поставщики JPA. Hibernate является одним из многих поставщиков реализации JPA, который реализует спецификации JPA в любой среде, поддерживающей JPA, включая серверы приложений Java SE и Java EE..
Помимо того, что Hibernate является самым популярным поставщиком реализации JPA, фреймворк сохраняет свой собственный API для обеспечения обратной совместимости, а также для поддержки нестандартных функций. Hibernate поставляется с несколькими функциями, которые не поддерживаются Java Persistence API, такими как расширенные генераторы идентификаторов, новые API даты и времени, повторяющиеся аннотации, результаты Steam запросов, настраиваемые операторы CRUD, неизменяемые сущности, поддержка естественных идентификаторов, специальное объединение несвязанных сущностей , и т.д.
EntityManager - это стандарт для реализации спецификации JPA, который одинаков для всех реализаций. Напротив, если вы хотите использовать Hibernate API, вы должны использовать Hibernate-специфичный сеанс для обработки персистентности. Однако вы не сможете перейти на нового поставщика, если решите использовать Session, поскольку он ограничен Hibernate API..
Почти все корпоративные приложения нуждаются в постоянном хранении данных. Это жизненно важно для корпоративных приложений из-за необходимого доступа к реляционным базам данных. Постоянство является фундаментальной концепцией в разработке приложений и само по себе является проблемой, поскольку необходимо сериализовать иерархически структурированные объекты Java в базу данных быстрым и эффективным способом. Хотя постоянство уже стало горячей темой для обсуждения в сообществе Java, многие разработчики даже не согласятся с масштабом проблемы. В контексте объектно-ориентированного языка постоянство означает, что данные все еще доступны даже после завершения процесса, который их создал. Существует много способов постоянного хранения данных. Hibernate - один из таких проектов, цель которого - обеспечить полное решение проблемы постоянства в Java, тогда как JPA - это спецификация для управления постоянными данными и объектно-реляционными сопоставлениями..