Обзор библиотек HIBERNATE

Автор: Фадеев И.В., Фадеева Т.А.

Журнал: Экономика и социум @ekonomika-socium

Статья в выпуске: 6-2 (25), 2016 года.

Бесплатный доступ

В статье приведен обзор библиотек HIBERNATE.

Языки программирования, программное обеспечение, компоненты

Короткий адрес: https://sciup.org/140120808

IDR: 140120808

Текст научной статьи Обзор библиотек HIBERNATE

Для связи Java-классов с таблицами БД Hibernate использует Mapping (сопоставление, проецирование), которое осуществляется с помощью конфигурационных XML-файлов или Java-аннотаций, и обеспечивает возможности по организации отношения между классами «один-ко-многим» и «многие-ко-многим». В дополнение к управлению связями между объектами Hibernate может также управлять рефлексивными отношениями, где объект имеет связь «один-ко-многим» с другими экземплярами своего собственного типа данных.

Hibernate поддерживает использование обобщенных классов (generics), введённые в Java 5, и может быть настроен на «ленивые» (отложенные) загрузки коллекций, которые является вариантом, используемым по умолчанию.

Связанные объекты Hibernate позволяет настроить на каскадные операции. Например, родительский класс Album (музыкальный альбом) может быть настроен на каскадное сохранение и/или удаление своего потомка Track, что существенно сокращает время разработки и обеспечивает целостность данных. Функция проверки изменения данных (dirty checking) позволяет избежать ненужной записи действий в БД, выполняя SQL-обновление только при изменении полей персистентных (persist) объектов.

Персистентные (англ. persistent) — это объекты, которые при внесении в них каких-то изменений сохраняют все свои предыдущие состояния и доступ к этим состояния.

Язык запросов Hibernate (HQL) – позволяет выполнять SQL-подобные запросы, определенные вместе с объектами данных Hibernate.

Преимущество данного способа написания запросов, заключается в написании обычных SQL запросов, но с использованием в нём Java – объектов, что способствует пониманию такого запроса человеком. Но при больших и сложных запросах снижается производительность.

Язык запросов Criteria – позволяет создавать запросы, применяя различные критерии, которые представляют собой условия, такие как: and, or, like и и.т.д.

Основное преимущество такого способа написания запросов заключается в том, что работать нужно только с одним языком Java. Но при объёмном запросе сложность написания резко возрастает из-за большой вложенности.

Компоненты Hibernate.

В Hibernate понятие компонент используется в нескольких различных контекстах, для разных целей.

Зависимые объекты.

Компонент – это содержащийся объект, который сохраняется как значение, а не как сущность. Термин компонент относится к объектноориентированному понятию композиция.

Так как компоненты являются композицией, они не поддерживают совстместно используемых ссылок. Иными словами, экземпляр компонента всегда один для содержащего его экземпляра класса. Не бывает ситуации, когда два разных экземпляра содержат ссылку на один и тот же экземпляр компонента. Значение null является специальным для компонента. Когда подгружается содержащийся объект, Hibernate предполагает, что если все колонки компонента отсутствуют (null), то компонент также отсутствует (null). Для большинства случаев, это так и есть.

Свойства компонента могут быть любого из типов Hibernate (коллекции, ассоциации многие к одному (many-to-one), другие компоненты, и т.д.), за исключением примитивных типов. Причём, вложенные компоненты не считаются экзотическим случаем. Hibernate предназначен для поддержки очень детализированной объектной модели.

Коллекции зависимых объектов

Поддерживаются коллекции компонентов. Объявляйте коллекции компонентов заменой тэга на .

Составные элементы могут содержать компоненты, но не коллекции. Если ваш составной компонент сам содержит компоненты, используйте тэг . Это достаточно редкий случай - коллекция компонентов, каждый из которых содержит компоненты.

Отображение композитных элементов не поддерживает необязательные (null) свойства, когда используется . При удалении Hibernate использует значения каждого столбца для идентификации удаляемых объектов (это связано с тем, что в таблицах с составными элементами не существует выделенного первичного ключа), что невозможно для null значений. Вы должны использовать только обязательные (not-null) свойства в составных элементах или использовать , , или .

Составные элементы могут применяться в запросах, используя обычный синтаксис ассоциаций с другими сущностями.

Динамические компоненты

Семантика отображения идентична . Преимущество такого способа отображения, в возможности определять истинное свойство JavaBean в момент развёртывания приложения на сервере приложений, редактируя документ маппинга. (Изменение документа маппинга во время выполнения также возможно, используя Document object model(DOM) - парсер.)

Список литературы Обзор библиотек HIBERNATE

  • P. Peak, N. Heudecker -«Hibernate Quckly», 2003 г.
  • C. Bauer, G. King -«Java Persistence with Hibernate»
Статья научная