Архив автора: admin

Использование настройки orphanRemoval для автоматического удаления из БД строк, когда соответствующие им объекты удаляются из поля-коллекции родительского объекта в Hibernate

При создании двунаправленной связи между двумя классами-сущностями мы должны самостоятельно управлять жизненными циклами объектов каждого класса. Однако, если объекты дочернего класса используются только в полях типа Collection родительского класса, то с помощью настройки orphanRemoval можно указать Hibernate’у удалять из БД строки с данными дочернего класса, при удалении объектов из этой коллекции.

Например, если в классе Person есть поле List и между классами Person и Address установлена двунаправленная связь, то можно настроить автоматическое удаление строк из таблицы Address при удалении соответствующих объектов из List.

Читать далее

Автоматическое удаление связанных классов-сущностей при удалении родительского объекта с помощью настройки CascadeType.REMOVE в Hibernate

При создании двунаправленной связи между двумя классами-сущностями мы должны самостоятельно управлять жизненными циклами объектов каждого класса, в том числе удалением строк из БД. С помощью настройки CascadeType.REMOVE в Hibernate можно избавиться от иногда рутинной операции удаления дочерних сущностей сразу после удаления родительской.

Читать далее

Автоматическое сохранение состояния связанных классов-сущностей при сохранении состояния родительского объекта с помощью настройки CascadeType.PERSIST в Hibernate

При создании двунаправленной связи между двумя классами-сущностями мы должны самостоятельно управлять жизненными циклами объектов каждого класса, в том числе сохранением строк в БД. С помощью настройки CascadeType.PERSIST в Hibernate можно избавиться от иногда рутинной операции сохранения дочерних сущностей сразу после сохранения родительской.

Читать далее

Создание двунаправленной связи между классами-сущностями с помощью аннотаций @ManyToOne и @OneToMany в Hibernate

Одной из сильных сторон объектного моделирования предметной области заключается в возможности создавать двунаправленные связи между родительскими и дочерними объектами. Так, если пользователю может соответствовать несколько адресов, то не только класс Address будет содержать поле Person, к которому конкретный адрес относится, но и класс Person может содержать список типа Address со всеми относящимися к нему адресами.

В реляционных базах данных невозможно точно воспроизвести такие отношения. Но Hibernate снимает это несоответствие, позволяя разработчику создавать двунаправленные отношения в объектной модели в Java, продолжая сохранять данные в реляционной модели в БД.

Читать далее

Создание связей типа многие-к-одному между классами-сущностями с помощью аннотации @ManyToOne в Hibernate

Создание простых связей типа многие-к-одному в моделях предметной области полностью соответствует взаимоотношению таблиц в БД. Строки одной из таблиц содержат внешний ключ, ссылающийся на строку другой таблицы. При этом та таблица, на которую ссылаются, об этом «не знает». Во многих случаях в модели предметной области воспроизведение подобных отношений между классами-сущностями оказывается достаточным.

Читать далее

Установка опции ON DELETE CASCADE на внешний ключ таблицы, ссылающейся на родительскую с помощью настройки OnDeleteAction.CASCADE в Hibernate

Hibernate позволяет настроить на уровне БД каскадное удаление данных дочерних таблиц, при удалении строки родительской таблицы. Поскольку не все СУБД поддерживают данных функционал, то его использование может отразиться на переносимости приложения между разными СУБД.

Читать далее

Отображение полей типа Set и List в встраиваемых (@Embeddable) классах

Встраиваемые(@Embeddable) классы-значения могут содержать поле типа той или иной коллекции (List, Set и т.п.). Тогда данные этой коллекции будут храниться в отдельной таблице, которая может быть настроена с помощью аннотаций @ElementCollection и @CollectionTable.

Читать далее

Отображение полей типа Map встраиваемых (@Embeddable) компонентов с помощью аннотаций @ElementCollection и @CollectionTable

Класс-сущность может содержать поле типа Map, в котором либо ключ, либо значение, либо и то и другое будет встраиваемого (@Embeddable) типа. Такие данные отображаются в отдельные таблицы, которые можно настроить с помощью @ElementCollection и @CollectionTable, а также некоторых других аннотаций.

Читать далее

Отображение полей типа List и Set встраиваемых (@Embeddable) компонентов с помощью аннотаций @ElementCollection и @CollectionTable

Если класс-сущность содержит не просто поле встраиваемого (@Embeddable) типа, а коллекцию объектов встраиваемого типа, то для данных этих объектов будет создана отдельная таблица, которая настраивается с помощью аннотаций @ElementCollection и @CollectionTable.

Читать далее

Создание десктопного (консольного или Swing) приложения на Spring Boot

Создадим минимальное Spring Boot приложение, которое будет выполняться на рабочем столе пользователя, используя при этом все возможности фреймворка.

Читать далее