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

83 записи с тегом "Hibernate"

Посмотреть все теги

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

1. Обзор

При работе с ORM выборку/загрузку данных можно разделить на два типа: нетерпеливую и ленивую.

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

2. Зависимости Maven

Чтобы использовать Hibernate, давайте сначала определим основную зависимость в нашем pom.xml :

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

1. Введение

В этом руководстве мы поговорим об исключении EntityNotFoundException из пакета javax.persistence . Мы рассмотрим случаи, когда может возникнуть это исключение, а затем напишем тесты для этих случаев.

2. Когда возникает исключение EntityNotFoundException ?

Документация Oracle для этого исключения определяет три ситуации, в которых поставщик сохраняемости может генерировать исключение EntityNotFoundException :

  • EntityManager.getReference для несуществующей сущности
  • EntityManager.refresh для объекта, которого нет в базе данных
  • EntityManager.lock с пессимистичной блокировкой сущности, не существующей в базе данных

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

1. Введение

В этой статье мы покажем, как отображать значения временных столбцов в Hibernate, включая классы из пакетов java.sql , java.util и java.time .

2. Настройка проекта

Чтобы продемонстрировать сопоставление временных типов, нам понадобится база данных H2 и последняя версия библиотеки hibernate-core :

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.12.Final</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.194</version>
</dependency>

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

1. Обзор

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

Следовательно, может быть полезно просмотреть взаимодействие Hibernate с базой данных. Например, SQL, сгенерированный Hibernate для чтения данных из таблицы.

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

2. Запись SQL

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

1. Обзор

PostgreSQL поддерживает определение массивов любого типа (встроенных или определяемых пользователем) как типов столбцов таблицы . В этом руководстве мы рассмотрим несколько способов сопоставления массива PostgreSQL с помощью Hibernate .

2. Базовая установка

В качестве предварительного условия для подключения к базе данных PostgreSQL мы должны добавить последнюю зависимость postgresql Maven в наш pom.xml вместе с конфигурациями Hibernate. Кроме того, давайте создадим класс сущности с именем User с ролями массива String : ``

@Entity
public class User {
@Id
private Long id;
private String name;

private String[] roles;

//getters and setters
}

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

1. Обзор

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

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

2. Простые идентификаторы

Самый простой способ определить идентификатор — использовать аннотацию @Id .

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

1. Обзор

Аннотация javax.persistence.JoinColumn помечает столбец как столбец соединения для ассоциации сущностей или коллекции элементов.

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

2. Пример сопоставления @OneToOne

Аннотация @JoinColumn в сочетании с сопоставлением @OneToOne указывает, что данный столбец в объекте-владельце ссылается на первичный ключ в ссылочном объекте:

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

1. Обзор

В реляционных базах данных нет простого способа отображать иерархии классов в таблицы базы данных.

Для решения этой проблемы в спецификации JPA предусмотрено несколько стратегий:

  • MappedSuperclass — родительские классы, не могут быть сущностями .
  • Единая таблица — объекты из разных классов с общим предком помещаются в одну таблицу.
  • Объединенная таблица — у каждого класса есть своя таблица, и для запроса сущности подкласса требуется объединение таблиц.
  • Таблица для каждого класса — все свойства класса находятся в его таблице, поэтому объединение не требуется.

Каждая стратегия приводит к различной структуре базы данных.

Наследование сущностей означает, что мы можем использовать полиморфные запросы для получения всех сущностей подкласса при запросе суперкласса.

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

1. Обзор

Для некоторых проектов может потребоваться сохранение объектов JSON в реляционной базе данных.

В этом руководстве мы увидим, как взять объект JSON и сохранить его в реляционной базе данных .

Доступно несколько фреймворков, обеспечивающих эту функциональность, но мы рассмотрим несколько простых, универсальных вариантов, использующих только Hibernate и Jackson .

2. Зависимости

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

1. Введение

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

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

2. Найдите и устраните проблемы с производительностью

2.1. Записывать операторы SQL в рабочей среде