Интерцепторы и события в Hibernate

Бывает необходимо реагировать на какие-то события происходящие внутри Hibernate и, например, контролировать как сущности переходят из одного состояния в другое. Применений этой возможности можно придумать множество — вести статистику обращений, проверять уровень доступа, вести историю изменений и так далее. Hibernate Читать далее Интерцепторы и события в Hibernate

ENVERS: автоматический аудит изменений в Hibernate

«…и мы должны иметь возможность видеть, когда, как и кто изменил данные» — распространённая хотелка при разработке приложения, работающего с БД. Заказчик обычно хочет видеть, для некоторых таблиц, какие изменения в них вносились, когда вносились, кем вносились и какие были Читать далее ENVERS: автоматический аудит изменений в Hibernate

Как склонировать объект в Hibernate

Вопрос небольшой, но довольно популярный — как загрузить объект из базы и сохранить его точную копию, но с другим id?

Транзакции и блокировки в Hibernate

Транзакция это набор операций, которые могут быть либо целиком и успешно выполнены, либо полностью не выполнены. Транзакции в базах данных соответствуют свойствам ACID: Атомарность — транзакция может быть либо целиком выполнена, либо целиком отменена. Согласованность — состояние данных должно быть логически Читать далее Транзакции и блокировки в Hibernate

Кэширование в Hibernate

В статье о поддержке пользовательских типов в Hibernate упоминается о поддержке кэширования. В этой статье я постараюсь рассказать о кэшровании подробнее. Идея кэширования (не только в Hibernate) основывается на мнении, что из всех данных, доступных для обработки, работа ведётся только Читать далее Кэширование в Hibernate

Пользовательские типы в Hibernate

Из коробки Hibernate поддерживает некий общий набор типов данных SQL и типов данных Java, а также отображений между ними. В основном в этот набор входят базовые вещи, такие как даты, строки, числа, блобы и так далее. С полным списком, а Читать далее Пользовательские типы в Hibernate

Первичные ключи в Hibernate

Каждая Hibernate сущность должна иметь идентификатор, который её однозначно идентифицирует. В мире SQL подобный идентификатор называется, с некоторыми допущениями,первичный ключ. В качестве такого идентификатора можно использовать примитивные типы и их обёртки, строки, BigDecimal/BigInteger, даты и т.д. Hibernate требует, чтобы каждый такой Читать далее Первичные ключи в Hibernate

Hibernate Criteria API

Начиная с версии 5.0 собственный Hibernate Criteria API признан устаревшим и не развивается. Вместо него рекомендуется использовать JPA Criteria API. Начиная с версии 5.2 Hibernate Criteria API объявлен deprecated и не рекомендуется к использованию Несмотря на вышесказанное страшное предупреждение, родной Читать далее Hibernate Criteria API

Hibernate SQL запросы

HQL запросы и прямая загрузка сущностей, это очень здорово, но хорошо бы иметь озможность и выполнять запросы напрямую, используя всю мощь SQL и вашей базы данных. Однако, такие запросы могут вернуть данные которые Hibernate не ожидает увидеть или которые даже не Читать далее Hibernate SQL запросы

Hibernate Query Language

Hibernate Query Language это аналог SQL в мире Hibernate, ориентированный на запросы не к таблицам, а к классам. Идеологически он очень похож на Java Persistence Query Language, так что любой JPQL запрос является одновременно и корректным HQL запросом. Обратное может Читать далее Hibernate Query Language