JPA и Hibernate – Словарь ключевых понятий

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/70

flashcard set

Earn XP

Description and Tags

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

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

71 Terms

1
New cards

ORM (Object-Relational Mapping)

Концепция преобразования объектов приложения в строки реляционной БД и обратно.

2
New cards

JPA (Java Persistence API)

Стандартная спецификация ORM для Java; задаёт единый интерфейс управления сущностями, их жизненным циклом и запросами.

3
New cards

Hibernate

Библиотека-провайдер JPA, реализующая ORM-функции и расширяющая их собственными возможностями.

4
New cards

Proxy в Hibernate

Паттерн-заглушка, подменяющая реальный объект для ленивой загрузки

5
New cards

Кэш первого уровня

Сессионный кэш Hibernate; встроен по умолчанию, живёт в пределах Session и исключает дублирующиеся запросы.

6
New cards

Кэш второго уровня

Кэш уровня SessionFactory; общий для всех сессий, требует настройки и стороннего провайдера (Ehcache и др.).

7
New cards

Кэш запросов (Query Cache)

Третий уровень кэширования; сохраняет результаты запросов JPQL/HQL, а не сами сущности.

8
New cards

Ehcache

Популярный провайдер второго уровня кэша для Hibernate.

9
New cards

RegionFactory

Интерфейс-мост между Hibernate и провайдером кэша второго уровня.

10
New cards

Стратегия кэширования Read-Only

Для неизменяемых сущностей; попытка изменить — исключение.

11
New cards

Стратегия Read/Write

Строгая согласованность через «мягкие» блокировки до коммита транзакции.

12
New cards

Стратегия Non-strict Read/Write

Кэш обновляется после коммита; возможны короткие окна устаревших данных.

13
New cards

Стратегия Transactional

Полная сериализация транзакций; наименее производительна, но наиболее безопасна.

14
New cards

Связь One-to-One

Один объект связан ровно с одним другим объектом.

15
New cards

Связь Many-to-One

Многие объекты ссылаются на один объект-родитель.

16
New cards

Связь One-to-Many

Один объект содержит коллекцию многих других объектов.

17
New cards

Связь Many-to-Many

Многие объекты связаны со многими; создаётся промежуточная таблица.

18
New cards

Владелец связи (Owning Side)

Сторона, содержащая внешний ключ и аннотацию @JoinColumn.

19
New cards

AUTO-генерация ключа

Hibernate выбирает стратегию сам; никогда не выберет TABLE, если доступен более быстрый вариант.

20
New cards

N+1 проблема

Один запрос к главной сущности вызывает N дополнительных запросов к связанным сущностям.

21
New cards

Entity Graph

Механизм JPA для указания, какие связи загружать вместе с сущностью, решая проблему N+1.

22
New cards

JOIN FETCH

JPQL-конструкция, объединяющая выборку сущности и связанных данных в одном SQL-запросе.

23
New cards

LockModeType.NONE

Отсутствие блокировки.

24
New cards

LockModeType.OPTIMISTIC

Оптимистическая блокировка; проверка версии при коммите.

25
New cards

LockModeType.OPTIMISTICFORCEINCREMENT

Проверяет версию и всегда её увеличивает.

26
New cards

LockModeType.PESSIMISTIC_READ

Общий READ-лок в БД; читать можно, писать нельзя.

27
New cards

LockModeType.PESSIMISTIC_WRITE

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

28
New cards

LockModeType.PESSIMISTICFORCEINCREMENT

Как PESSIMISTIC_WRITE плюс инкремент версии.

29
New cards

@IdClass

Аннотация JPA для описания составного ключа отдельным классом.

30
New cards

@EmbeddedId

Встраивание объекта-ключа в сущность для составного PK.

31
New cards

Простая аннотация @Id (без класса ключа)

Допускается Hibernate для нескольких полей, но не JPA.

32
New cards

@Temporal

Для mappинга java.util.Date/Calendar до Java 8 (DATE, TIME, TIMESTAMP).

33
New cards

LocalDate / LocalDateTime

Типы Java 8+, маппятся без @Temporal.

34
New cards

@ElementCollection

Хранит коллекции базовых типов/Embeddable в отдельной таблице без PK.

35
New cards

EnumType.ORDINAL

Сохраняет порядковый номер enum; изменение порядка опасно.

36
New cards

EnumType.STRING

Сохраняет строковое имя enum-константы.

37
New cards

Каскады (CascadeType)

Распространяют операции persist, merge, remove, refresh, detach, all на связанные сущности.

38
New cards

Entity (сущность)

Класс, удовлетворяющий правилам JPA (@Entity, @Id и др.) и отображаемый в таблицу.

39
New cards

Жизненный цикл сущности

Состояния New, Managed, Detached, Removed.

40
New cards

Метод persist()

Переводит New → Managed и вставляет запись при коммите.

41
New cards

Метод merge()

Копирует состояние Detached объекта в Managed копию.

42
New cards

Метод remove()

Помечает Managed объект на удаление.

43
New cards

Метод detach()

Отсоединяет Managed объект, переводя в Detached.

44
New cards

Abstract Entity

Абстрактный класс-сущность; сам не инстанциируется, но может быть в иерархии.

45
New cards

Embeddable класс

@Embeddable; не имеет собственной таблицы, встраивается в сущности.

46
New cards

@Embedded

Поле сущности, в которое встраивается Embeddable объект.

47
New cards

Criteria API

Типобезопасное, объектно-ориентированное построение запросов.

48
New cards

EntityManager

Главный интерфейс JPA для управления сущностями, транзакциями и запросами.

49
New cards

Persistence Context

Контейнер Managed-объектов; бывает транзакционный и расширенный.

50
New cards

JPQL/HQL

Объектно-ориентированные языки запросов; JPQL — подмножество HQL.

51
New cards

Полиморфизм в JPQL

Запрос к базовому типу возвращает объекты всех наследников, если не указан TYPE().

52
New cards

Стратегия SINGLE_TABLE

Одна таблица на всю иерархию наследования + дискриминатор.

53
New cards

Стратегия JOINED

Общие поля — в таблице родителя, уникальные — в таблицах потомков, связанные FK.

54
New cards

Стратегия TABLEPERCLASS

Каждый класс имеет собственную таблицу со всеми полями.

55
New cards

@MappedSuperclass

Базовый класс без таблицы; наследники-энтити получают его поля/аннотации.

56
New cards

@Access

Определяет способ обращения JPA к полям (FIELD) или свойствам (PROPERTY).

57
New cards

@Cacheable

Аннотация JPA: сущность может кэшироваться во 2-м уровне.

58
New cards

@Cache (Hibernate)

Расширение Hibernate для детальной настройки кэша 2-го уровня.

59
New cards

@GeneratedValue.IDENTITY

Поле PK заполняется авто-инкрементом БД.

60
New cards

@GeneratedValue.SEQUENCE

Используется sequence-объект БД.

61
New cards

@GeneratedValue.TABLE

Отдельная таблица-счётчик; самая медленная стратегия.

62
New cards

@OrderBy

Сортирует коллекцию по заданному полю при выборке; порядок в БД не хранится.

63
New cards

@OrderColumn

Создаёт колонку позиции; сохраняет порядок элементов List в БД.

64
New cards

@JoinColumn

Определяет внешний ключ в таблице владельца связи.

65
New cards

@JoinColumns

Набор @JoinColumn для составных FK.

66
New cards

@JoinTable

Создаёт промежуточную таблицу для Many-to-Many или нестандартных связей.

67
New cards

@Basic

Помечает атрибут как базовый тип; можно задать fetch и optional.

68
New cards

@Column

Настраивает имя, длину, nullable и др. свойства столбца.

69
New cards

@Transient

Поле игнорируется ORM и не сохраняется в БД.

70
New cards

JDBC

Низкоуровневый API работы с БД; ручное управление SQL, соединениями и кэшем.

71
New cards

JDBC vs JPA

JDBC даёт полный контроль и скорость, JPA — абстракцию и удобство за счёт ORM-слоя.