Расширенные темы 1. SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими.

Презентация:



Advertisements
Похожие презентации
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Advertisements

Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Школьная форма Презентация для родительского собрания.
1. Определить последовательность проезда перекрестка
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Типовые расчёты Растворы
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Michael Jackson
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от
дней и ночей 27 миллионов жизней советских людей 3.
1 Знаток математики Тренажер Таблица умножения 3 класс Школа России Масько Любовь Георгиевна Муниципальное общеобразовательное учреждение средняя общеобразовательная.
(урок математики). Назовите числа, которые делятся на 3: (3, 6, 9, 12, 15, 18, 21, 24, 27, 30) Назовите числа, которые делятся на 4: (4, 8,12, 16, 20,
Ф. Т. Алескеров, Л. Г. Егорова НИУ ВШЭ VI Московская международная конференция по исследованию операций (ORM2010) Москва, октября 2010 Так ли уж.


Напряжения и деформации в сварных швах ТЕМА УРОКА 1.
1 Трудные случаи таблицы умножения и деления 2 Приношу свои извинения, но придётся начать заново!
Двоичная система счисления АЛФАВИТ: 1, 10, 11, 100, 101, 110, 111, 1 000, 1 001, 1010, , 1 100, 1 101, 1 110, 1 111, ,
Транксрипт:

Расширенные темы 1

SQL запросы Язык JPQL является абстракцией и «общим знаменателем» всех SQL диалектов. Очевидно, что конкретный диалект обладает бОльшими возможностями JPQL не содержит всех возможностей конкретной СУБД: Подзапросы в FROM Иерархические запросы Хранимые процедуры Оптимизация специфических SQL запросов Однако, рекомендация использовать SQL, только в случае, когда возможностей JPQL не достаточно для решения данной задачи 2

SQL запросы Пример. Использование native SQL (example 10-01) Дает преимущества: Сокращает код, по сравнению с традиционным JDBC Использование интерфейса Query, что делает код консистентным с остальным приложением 3

SQL запрос SQL запрос может быть определен статически или динамически, подобно JPQL SQL запрос не разбирается JPA провайдером, а выполняется непосредственно БД Необходимо предоставить мэпинг результатов запроса на сущность По умолчанию query engine использует O-R мэпинг сущности, чтобы понять как колонки result set мэпятся на сущность 4

Named SQL запрос 5

SQL запрос Необходимо помнить, что SQL запрос возвращает сущности, managed persistence контекстом, в котором выполняется транзакция При этом надо учитывать, что измененные данные зафиксируются в БД при commit транзакции Факт схожести обработки JPQL и SQL может быть использован для абстрагирования реального способа получения сущностей из БД для остального приложения 6

Мэпинг Result Set SQL выражения Не всегда наименование полей result set совпадает с полями сущности Не всегда result set возвращает информацию только об одной сущности Указать явный мэпинг можно указав параметры и имя мэпинга Далее, native запрос выдолняется с указанием мэпинга: Query query = em.createNativeQuery( "SELECT emp_id, name, salary, manager_id, " + "dept_id, address_id FROM EMP ", "employeeResult"); 7

Мэпинг foreign ключей При выполнении native запроса провайдер учитывает foreign ключи для single-valued ассоциаций Провайдер делает повторный запрос и выбирает соответствующие сущности из БД Нет возможности проинициализировать collection-valued отношения native запросом SELECT emp_id, name, salary, manager_id, dept_id, address_id FROM emp START WITH manager_id IS NULL CONNECT BY PRIOR emp_id = manager_id manager_id, dept_id, address_id являются вторичными ключами, которые будут разыменованы провайдером 8

Мэпинг нескольких сущностей В native SQL выражении можно возвращать данные для инициализации нескольких сущностей SELECT emp_id, name, salary, manager_id, dept_id, address_id, id, street, city, state, zip FROM emp, address WHERE address_id = id Соответствующий 9

Мэпинг алиасов колонок В случае, когда название колонки не совпадает с названием поля сущности, используется 2 подхода Использование алиасов: SELECT emp.id AS emp_id, name, salary, manager_id, dept_id, address_id, address.id, street, city, state, zip FROM emp, addressWHERE address_id = address.id Использование явного 10

Мэпинг Result Set SQL выражения. Дополнительные возможности В спецификации JPA есть также поддержка мэпинга SQL запроса в случае: Когда result set частично состоит из скалярных данных, не принадлежащих сущностям Мэпинга compound первичного ключа Мэпинга иерархий 11

Lifecycle Callbacks 12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50