Учебники

Hibernate — O / R Mappings

До сих пор мы видели очень простое отображение O / R, используя hibernate, но есть три наиболее важных темы отображения, которые мы должны изучить подробно.

Это —

  • Составление карт коллекций,
  • Отображение связей между классами сущностей и
  • Сопоставления компонентов.

Коллекции сопоставлений

Если у сущности или класса есть коллекция значений для определенной переменной, то мы можем отобразить эти значения, используя любой из интерфейсов коллекции, доступных в Java. Hibernate может сохранять экземпляры java.util.Map, java.util.Set, java.util.SortedMap, java.util.SortedSet, java.util.List и любой массив постоянных сущностей или значений.

Sr.No. Тип коллекции и описание карт
1 java.util.Set

Это сопоставляется с элементом <set> и инициализируется с помощью java.util.HashSet.

2 java.util.SortedSet

Это отображается с помощью элемента <set> и инициализируется с помощью java.util.TreeSet. Атрибут sort может быть установлен как в компараторе, так и в естественном порядке.

3 java.util.List

Это сопоставляется с элементом <list> и инициализируется с помощью java.util.ArrayList

4 java.util.Collection

Это отображается с помощью элемента <bag> или <ibag> и инициализируется с помощью java.util.ArrayList

5 java.util.Map

Это сопоставляется с элементом <map> и инициализируется с помощью java.util.HashMap.

6 java.util.SortedMap

Это отображается с помощью элемента <map> и инициализируется с помощью java.util.TreeMap. Атрибут sort может быть установлен как в компараторе, так и в естественном порядке.

Это сопоставляется с элементом <set> и инициализируется с помощью java.util.HashSet.

Это отображается с помощью элемента <set> и инициализируется с помощью java.util.TreeSet. Атрибут sort может быть установлен как в компараторе, так и в естественном порядке.

Это сопоставляется с элементом <list> и инициализируется с помощью java.util.ArrayList

Это отображается с помощью элемента <bag> или <ibag> и инициализируется с помощью java.util.ArrayList

Это сопоставляется с элементом <map> и инициализируется с помощью java.util.HashMap.

Это отображается с помощью элемента <map> и инициализируется с помощью java.util.TreeMap. Атрибут sort может быть установлен как в компараторе, так и в естественном порядке.

Hibernate поддерживает массивы с <primitive-array> для типов примитивных значений Java и <array> для всего остального. Однако они используются редко, поэтому я не буду обсуждать их в этом уроке.

Если вы хотите отобразить пользовательские интерфейсы коллекций, которые напрямую не поддерживаются Hibernate, вам нужно сообщить Hibernate о семантике ваших пользовательских коллекций, что не очень просто и не рекомендуется использовать.

Ассоциация сопоставлений

Отображение ассоциаций между классами сущностей и взаимосвязями между таблицами — это душа ORM. Ниже приведены четыре способа, которыми можно выразить кардинальность отношений между объектами. Отображение ассоциации может быть как однонаправленным, так и двунаправленным.

Sr.No. Тип отображения и описание
1 Многие-к-одному

Отображение отношений «многие к одному» с использованием Hibernate

2 Один к одному

Отображение отношений один-к-одному с помощью Hibernate

3 Один ко многим

Отображение отношения один ко многим с помощью Hibernate

4 Многие-ко-многим

Отображение отношений «многие ко многим» с использованием Hibernate

Отображение отношений «многие к одному» с использованием Hibernate

Отображение отношений один-к-одному с помощью Hibernate

Отображение отношения один ко многим с помощью Hibernate

Отображение отношений «многие ко многим» с использованием Hibernate

Сопоставления компонентов

Очень возможно, что класс Entity может иметь ссылку на другой класс в качестве переменной-члена. Если указанный класс не имеет своего собственного жизненного цикла и полностью зависит от жизненного цикла класса сущности-владельца, следовательно, указанный класс, следовательно, называется классом Компонента .

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

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