Перейти к основному содержимому

· 15 мин. чтения

1. Введение

В этом руководстве мы обсудим некоторые распространенные исключения, с которыми мы можем столкнуться при работе с Hibernate.

Мы рассмотрим их назначение и некоторые распространенные причины. Кроме того, мы рассмотрим их решения.

2. Обзор исключений гибернации

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

· 2 мин. чтения

1. Введение

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

Однако мы можем столкнуться с ошибками при работе с именованными параметрами. Двумя наиболее распространенными из автономной библиотеки Hibernate и реализации Hibernate JPA, соответственно, являются:

  • Не все именованные параметры установлены
  • Именованный параметр не привязан

Хотя сообщения об ошибках могут различаться между vanilla Hibernate и его реализацией JPA, основная причина одна и та же.

В этом уроке мы рассмотрим, что вызывает эти ошибки и как их избежать . Попутно мы покажем, как использовать именованные параметры с автономной библиотекой Hibernate.

· 4 мин. чтения

1. Обзор

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

Именованный запрос — это статически определенный запрос с предопределенной неизменной строкой запроса. Они проверяются при создании фабрики сеансов, что приводит к быстрому сбою приложения в случае ошибки.

В этой статье мы увидим, как определять и использовать именованные запросы Hibernate с помощью аннотаций @NamedQuery и @NamedNativeQuery .

2. Сущность

· 4 мин. чтения

1. Введение

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

2. Кэш плана запроса

Каждый запрос JPQL или запрос Criteria анализируется в абстрактном синтаксическом дереве (AST) перед выполнением, чтобы Hibernate мог сгенерировать инструкцию SQL. Поскольку компиляция запросов требует времени, Hibernate предоставляет QueryPlanCache для повышения производительности.

Для нативных запросов Hibernate извлекает информацию об именованных параметрах и типе возврата запроса и сохраняет ее в ParameterMetadata .

· 4 мин. чтения

1. Обзор

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

В этом кратком руководстве мы увидим, как мы можем добиться этого в Hibernate, используя собственный класс.

2. Сущности

Во-первых, давайте посмотрим на сущности, которые мы будем использовать для извлечения данных:

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим, как получить все данные из таблицы с помощью Hibernate, используя JPQL или Criteria API.

JPQL обеспечивает более быструю и простую реализацию, в то время как использование Criteria API является более динамичным и надежным.

2. JPQL

JPQL предоставляет простой и понятный способ получить все сущности из таблицы.

· 4 мин. чтения

1. Обзор

Большинство приложений, управляемых JPA, интенсивно используют файл «persistence.xml» для получения реализации JPA, такой как Hibernate или OpenJPA .

Наш подход здесь предоставляет централизованный механизм для настройки одного или нескольких модулей сохраняемости и связанных с ними контекстов сохраняемости .

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

С другой стороны, можно запустить реализацию JPA, вообще не прибегая к файлу «persistence.xml» , просто используя обычную Java .

В этом уроке мы увидим, как это сделать с помощью Hibernate.

· 8 мин. чтения

1. Обзор

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

В этом уроке мы рассмотрим, как генерировать наиболее распространенные типы штрих-кодов в Java.

Во-первых, мы узнаем о внутренностях нескольких типов штрих-кодов. Далее мы рассмотрим самые популярные библиотеки Java для создания штрих-кодов. Наконец, мы увидим, как интегрировать штрих-коды в наше приложение, предоставляя их из веб-службы с помощью Spring Boot.

2. Типы штрих-кодов

· 3 мин. чтения

1. Введение

В этой быстрой статье мы рассмотрим использование преобразователей атрибутов, доступных в JPA 2.1, которые, проще говоря, позволяют нам сопоставлять типы JDBC с классами Java.

Здесь мы будем использовать Hibernate 5 в качестве нашей реализации JPA.

2. Создание конвертера

Мы собираемся показать, как реализовать преобразователь атрибутов для пользовательского класса Java.

· 3 мин. чтения

1. Введение

Отношения JPA могут быть как однонаправленными, так и двунаправленными. Это просто означает, что мы можем смоделировать их как атрибут только одной из связанных сущностей или обеих.

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

Для двунаправленных отношений мы обычно определяем:

  • сторона-владелец
  • обратная или референтная сторона

Аннотация @JoinColumn помогает нам указать столбец, который мы будем использовать для присоединения к ассоциации сущностей или коллекции элементов. С другой стороны, атрибут mappedBy используется для определения ссылающейся стороны (не владеющей стороной) отношения.