Hibernate - средство отображения между объектами и реляционными структурами (object-relational mapping, ORM) для платформы Java . Распространяется на условиях GNU Lesser General Public License. Hibernate предоставляет легкий для использования каркас (фреймворк) для отображения между объектно-ориентированной моделью данных и традиционной реляционной базой данных.
Основные возможности
Освобождает разработчика от значительных типовых задач по программированию взаимодействия с базой данных. Можно использовать при разработке с нуля, и для уже существующей базы данных. Hibernate заботится о связи классов с таблицами базы данных (и типов данных языка программирования с типами данных SQL), и предоставляет средства автоматического построения SQL запросов и считывания / записи данных.
Mapping
При использовании файла XML, Hibernate может генерировать скелет исходного кода для классов длительного хранения (persistent). В этом нет необходимости, если используется аннотация. Hibernate может использовать файл XML или аннотации для поддержки схемы базы данных. Обеспечиваются возможности по организации отношения между классами. В дополнение к управлению связями между объектами, Hibernate также может управлять рефлексивными ассоциациями, где объект имеет связь «один-ко-многим» с другими экземплярами своего собственного типа данных. Hibernate поддерживает отображение пользовательских типов значений. Это делает возможным такие сценарии:
- Переопределение типа по умолчанию SQL, Hibernate выбирает при отображении столбца свойства.
- Картирование перечисляемого типа Java до колонок БД, будто они являются обычными свойствами.
- Картирование одного свойства в несколько колонок.
Персистентность
Hibernate обеспечивает прозрачное сохранение POJO (Plain Old Java Objects - простых старых объектов Java). Единственное строгое требование для персистентного класса - конструктор без аргументов, не обязательно публичный. Для правильного поведения некоторых программ также требуется особое внимание к методам equals () и hashCode ().
Коллекции объектов данных, как правило, хранятся в виде коллекций Java-объектов, таких как набор (Set) и список (List). Поддерживаются обобщенные классы (Generics), введены в Java 5. Hibernate может быть настроен на «ленивые» (отложенные) загрузки коллекций. Отложенные загрузки является вариантом по умолчанию, начиная с Hibernate 3.
Связанные объекты могут быть настроены на каскадных операциях. Например, родительский класс, Album (музыкальный альбом), может быть настроен на каскадное сохранение и / или удаление Track. Это может сократить время разработки и обеспечить целостность. Функция проверки изменения данных (dirty checking) позволяет избежать ненужной записи действий в базу данных, выполняя SQL обновление только при изменении полей персистентных объектов.
Язык запросов
Hibernate обеспечивает использование SQL -подобного языка Hibernate Query Language (HQL), который позволяет выполнять SQL-подобные запросы, записанные рядом с объектами данных Hibernate. Запросы критериев предоставляются как альтернатива к HQL.
Интегрирование
Hibernate может использоваться как в самостоятельных приложениях Java, так и в программах Java EE, выполняемых на Север (EJB Session Beans). Также он может включаться как дополнительная возможность к другим языкам программирования. Например, Adobe интегрировал Hibernate в девятую версию ColdFusion (запускаемый на серверах с поддержкой приложений J2EE) с уровнем абстракции новых функций и синтаксиса, приложенных к CFML.